El SysAdmin del 3er Mundo

todo lo que expliqué mientras nadie prestaba atención

audífonos blutú

| Comments

Más por embullo que por necesidad, me he comprado uno de esos audífonos Bluetooth que se usan ahora. Estoy pasando un trabajo tremendo para adaptarme a tener la morronga esa en el cuello. Como si fuera poco, archlinux no me perdonó y me hizo de las suyas.

Al conectarlos se escuchaban horrible y se desaparecía el bluetooth.

Según me dijeron en el #archlinux de freenode. Se debe a que los audífonos se conecta como micrófonos/audífonos y no como audífonos solamente. Para ellos había que cambiarlos al modo A2DP.

El comando pacmd set-card-profile 2 a2dp_sink resuelve el problema. Pero tener que correr el comando cada vez que los conecte, no me parece; no me da tan fuerte todavía…

El gestor de audio de gnome supuestamente cambia el modo. Pero resulta que el puto pulse-audio, si arranca con GDM, forma una cagazón con los permisos ahí y no cambia de modo.

Para evitar eso, creas un fichero llamado /var/lib/gdm/.config/pulse/client.conf donde le declaras que no arrancará pulse-audio con gnome:

“/var/lib/gdm/.config/pulse/client.conf”
1
2
autospawn = no
daemon-binary = /bin/true

Pero eso no lo es todo. Si pulseaudio arranca con socket, se joden los audifonitos. Supuestamente creando una configuración, se deshabilita el socket, pero no pincha. Hay que deshabilitarlo con systemd. Ejecuta esto como root:

“sin socket plis”
1
2
[root@artema ~] mkdir -p /var/lib/gdm/.config/systemd/user
[root@artema ~] ln -s /dev/null /var/lib/gdm/.config/systemd/user/pulseaudio.socket

Reinicia y al conectar los audífonos; y, al hacerle click al dipositivo, debe darte una opción que conduce a la configuración de audio. Ahí mismo cambias el modo y seleccionas el dispositivo de salida de audio por defecto.

Otra cuestión es que pulseaudio use los audífonos como salida de audio por defecto al conectarlos. Finalmente decidí pasar mis configuraciones de pulseaudio al directorio de usuario:

“pulseudio en el home”
1
2
mkdir ~/.config/pulse/
cp -ruv /etc/pulse/ ~/.config/pulse/

Localiza el fichero ~/.config/pulse/default.pa y al final añadele esto:

“default.pa”
1
2
3
4
5
[lazaro@artema pulse]$ tail -4 ~/.config/pulse/default.pa

# file:///usr/share/doc/arch-wiki/html/en/PulseAudio/Troubleshooting.html#Bluetooth
# automatically switch to newly-connected devices
load-module module-switch-on-connect

Si este artículo te resultó interesante, considere donar 0.003 BTC: 1LgL9cfT2StNk9gdedMJZseMnKJCEgQJdQ

dispatcher script

| Comments

El network-manager, el sistema de 2 clicasos para configurar la interfaz de red. Resulta que cuando levanta la red, no se por qué, telepathy-salut se queda mariado y el chat “gente cerca” no ve a los usuarios. Al reiniciar avahi se le quita el mareo. Entonces la talla sería que el avahi se reiniciara solo.

Resulta que NetworkManger, tiene los llamados dispatcher. Puedes ver la documentación aquí

Los scripts que radique en /etc/NetworkManager/dispatcher.d/ se ejecutarán sí y solo si, pertenecen al root con permisos 755.

Los script reciben como primer argumento, la interfaz y como segundo la acción. Las acciones pueden ser up, down, conectivity-change, hostname y en fin, vease man NetworkManager para más detalles.

Mi script quedó así:

“/etc/NetworkManager/dispatcher.d/migancho.sh”
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/bin/bash

# la interfaz involucrada
INTERFAZ=$1

# la acción involucrada
ACCION=$2

# una función para loguear
function loguear() {
   logger $(basename $0) $@
}

# un logueo simple, pa saber lo que hay
loguear "acción «$ACCION» en la interfaz «$INTERFAZ»"

# según la acción
case "$ACCION" in


   up) # una interfaz que se levanto

      loguear 'tumbando telepathy y compañía'
      pkill -9 empathy
      pkill -9 telepathy

      loguear 'reiniciando avahi'
      systemctl restart avahi-daemon

      loguear 'ajustando la hora'
      systemctl start systemd-timesyncd

   ;;


   down) # al tumbar una conexión

     loguear 'para el clientico ntp de systemd'
     systemctl stop systemd-timesyncd


   ;;


   *)

      loguear 'sin accion'

   ;;

esac

Con journalctl -f puedes ver como loguea, en este caso el argumento $0 es el nombre del script. En fin puedes hacer muchísimas cosas creativas. Con ver en el man de NetworkManager las acciones; podrás subsanar muchas necesidades.

Si este artículo te resultó interesante, considere donar 0.003 BTC: 1LgL9cfT2StNk9gdedMJZseMnKJCEgQJdQ

password de windows

| Comments

Resulta que en el puesto de mando, uno de los tantos que se sientan ahí; le cambió el password a la canchanfleta que tienen por computadora y entonces NAADIEEE vio nada. Conclusión no apareció el autor de la contraseña y los técnicos no sabían que hacer (para variar).

“lázaro, tú que usas linux: ¿Podrías “hackear” la contraseña?”

Pregunta uno de los usuarios, con cara de: Cambié el password y no me acuerdo cual puse. Véase la definición del termino hacker y note lo mal empleado que está.

Metí un archlinux en la memoria flash de la pornografía, lo levanté en caliente e instalé chntpw.

Monté el disco de windows, primera partición (alias “C:”) en /mnt. Con el comando find y abusando de mi memoria, sobre un artículo que leí acerca de las contraseñas de Windows; localicé el fichero C:/Windows/System32/config/SAM

1
2
3
   pacman -S chntpw
   mount /dev/sdb1 /mnt
   cd /mnt/Windows/System32/config/

Como lo hice en un sistema en caliente, no pude copiar la salida, pero esto fue lo que hice.

Paso 1: Lista los usuarios de Güindos: chntpw -l SAM

Paso 2: Modifica el usuario “Administrador”: chntpw -u “Administrador” SAM

Verás un pequeño asistente en modo texto que te pregunta que hacer. Lo mejor es vaciar el password, luego desbloquearlo. Sale con quit y te preguntará si quieres guardar los cambios. No te preocupes, se entiende mejor cuando lo ves, es bastante simple.

Gracias a dios que a Rico McPato no se le ocurrió meter la contraseña en el registro de windows.

Si este artículo te resultó interesante, considere donar 0.003 BTC: 1LgL9cfT2StNk9gdedMJZseMnKJCEgQJdQ

Local ISO en XenServer

| Comments

Aveces se da el caso de que necesitamos aprovisionar un servidor xen desde cero y a esa hora no tienes ningún template a mano. Quizás la forma más rápida de montar la primera máquina virtual sea instalando desde un iso. No se por qué openxenmanager, no tiene la opción de almacenamientos locales como “.iso” Cuenta con NFS y hasta SATA over Ethernet, pero algo tan pedestre como un directorio con los ISO, no lo tiene.

Loguéate por ssh para el servidor y usando xe crearemos el repositorio. Primero designaremos un directorio que contendrá los “.iso”, elegimos la ruta /var/opt/xen/isos

“creando el directorio”
1
mkdir -p /var/opt/xen/isos

Creamos un Storage Repository del tipo iso y usamos el directorio como ubicación.

“xe”
1
2
3
xe sr-create name-label=LocalISO type=iso \
device-config:location=/var/opt/xen/isos \
device-config:legacy_mode=true content-type=iso

Ahora con scp cópiale los isos a esa ubicación

“scp”
1
scp ~/Downloads/ISO/debian-8.5.0-amd64-CD-1.iso root@tuxen.cu:/var/opt/xen/isos/

Si usas openxenmanager, desconéctate y vuélvete a conectar. Verás el repositorio de isos locales y en Storage, verás los isos que hallas copiados pal servidor. Podrás usarlo como unidad óptica de las máquinas virtuales.

Si este artículo te resultó interesante, considere donar 0.003 BTC: 1LgL9cfT2StNk9gdedMJZseMnKJCEgQJdQ

kiwix como servicio

| Comments

Dos pájaros de un tiro. Como crear unit de usuario y como usar kiwix como servicio:

La idea es correr un kiwix en segundo plano, como mi usuario sin que el root lance dicha unit, ya que ésto me huele a la posibilidad de escaladas de permisos.

Ante todo, vamos a crear el zoológico de systemd en el directorio de usuario. Si mal no recuerdo, esto fue lo que hice.

1
2
3
4
mkdir -p /home/lazaro/.config/systemd/user
cd  /home/lazaro/.config/systemd/user
loginctl enable-linger $USER
systemctl --user daemon-reload

Claro, el daemon-reload ahí no es necesario, pero para que te quede claro, que todas las operaciones de systemd, relacionadas con el usuario, se deben preceder del argumento –user

Crea el la unit, en mi caso se llama kiwix.service pero tu la puedes nombrar comotedelagana.service Trata de usar minúsculas y debes terminar con la extensión .service A mi me quedó así:

“kiwix.service”
1
2
3
4
5
6
7
8
9
10
[Unit]
Description=el kiwix como daemon en http://localhost:9091
After=network.target

[Service]
Type=forking
ExecStart=/opt/kiwix/bin/kiwix-serve --daemon --port=9091 --library /home/lazaro/.www.kiwix.org/kiwix/c2oklrcd.default/data/library/library.xml 

[Install]
WantedBy=multi-user.target

Ahora si mete un daemon-reload

Por cierto, fíjate bien en la linea ExecStart que es bien larga, nota que el parámetro –library se le envía como argumento el .xml que se genera al añadir fichero zim a tu librería. O sea, una vez abierto en la aplicación visual. Por tanto, Si vas a hacer un servidor, mejor será que le eches un vistazo a library.xml; el cual contiene los metadatos que apuntan a los “ficheros.zim”

Más o menos así luce un library.xml

“library.xml”
1
2
3
4
5
<?xml version="1.0"?>
<library current="b0e8b25e-1c6e-c354-21da-ceff3607de21" version="20110515">
  <book id="3b448cdb-6b20-73ed-421f-fdef87f80167" path="/opt/kiwix/data/wikipedia_es_all.zim" last="1470535686" title="Wikipedia ESP" description="Wikipedia en Español" language="spa" creator="Wikipedia" publisher="Kiwix" favicon="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" faviconMimeType="image/png" date="2015-10-12" articleCount="1206089" mediaCount="1111559" size="12988257" />
  <book id="b0e8b25e-1c6e-c354-21da-ceff3607de21" path="/opt/kiwix/data/wikipedia_en_all_nopic.zim" last="1470535759" title="Wikipedia ENG" description="Wikipedia en Inglés (sin imágenes)" language="eng" creator="Wikipedia" publisher="Kiwix" favicon="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" faviconMimeType="image/png" date="2015-05-17" articleCount="4858372" mediaCount="325904" size="16024312" />
</library>

Por ejemplo, a mi el valor de las etiquetas title y description, me gusta cambiarlo.

Para que se gener ese XML, abre la aplicación una vez para que se cree la biblioteca. O sea, en abrir archivos, añadimos a nuestra librería, todos los .zim que queramos.

Llegado a este punto, se habrá creado el perfil de kiwix en nuestro $HOME y contendrá el importantísimo library.xml. Si ya añadiste a tu biblioteca todos los .zim que quieres, terminamos con el kiwix. Ciérralo.

1
2
[lazaro@artema ~]$ file .www.kiwix.org/kiwix/*.default
.www.kiwix.org/kiwix/c2oklrcd.default: directory

Usamos el comando file para determinar cual fue. En mi caso se llama ~/.www.kiwix.org/kiwix/c2oklrcd.default

Al argumento ExecStart de la unit, debes darle la ruta absoluta de la librería, así que nada de ~/, le pones /home/fulanito.

Bueno, volviendo a la unit, veamos más de cerca el ExecStart

“scope de kiwix.service”
1
ExecStart=/opt/kiwix/bin/kiwix-serve --daemon --port=9091 --library /home/lazaro/.www.kiwix.org/kiwix/c2oklrcd.default/data/library/library.xml 

La ruta el binario de kiwix-serve en modo daemon –daemon por el puerto 9091 –port 9091 y siendo la librería –library (ruta absoluta)

Salva y ejecuta un daemon-reload. Luego, lánzalo:

1
systemctl --user start kiwix.service

Abre un navegador y apunta para http://localhost:9091

Si este artículo te resultó interesante, considere donar 0.003 BTC: 1LgL9cfT2StNk9gdedMJZseMnKJCEgQJdQ

hibernar en archlinux

| Comments

Hablando de cosas olvidables. Siempre que instalo archlinux, se me olvida que hay que hacer una ceremonia para que la hibernación pinche.

De más está que te diga que necesitarás una particion swap, con al menos el mismo tamaño de la RAM que tienes. No pincha con swapfiles.

En mi caso, yo hice una swap del tamaño de la RAM, lo cual me jode a la hora de hibernar, ya que se demora mucho descartando los datos que hay en la swap (si hay) en el momento de hibernar.

Bueno entrando en materia:

En el GRUB, le daremos el parámetros resume y usaremos como argumento, el disco de donde se resume, o sea la swap. Veamos cual es el UUID de la swap:

fstab
1
2
cat /etc/fstab |grep swap
UUID=2b3ed70d-5746-4a94-bd07-77eacd99f03c  none swap defaults,discard=pages 0 0

Vamos al cargador de arranque (grub en mi caso) y le decimos cual es el disco de donde debe tomar la imagen y resumirla. Localiza el fichero /etc/default/grub y en una de las primeras lineas, modifica la cláusula GRUB_CMDLINE_LINUX_DEFAULT inclúyele resume=UUID=LaUUiDeTuDisCoSwap. A mi me quedó así:

“la parte de arriba de
1
2
3
4
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Arch"
GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 resume=UUID=2b3ed70d-5746-4a94-bd07-77eacd99f03c"

Como ven, ahí declaramos (EL UUID DE LA SWAP) la partición donde se almacena la imagen que crea el proceso de hibernación.

Pero no todo está listo, aún initramfs no se ha dado por enterado que vamos a hibernar. Localiza el fichero /etc/mkinitcpio.conf y añadele el hook de resume, a mi me quedó así:

“fragmento de mkinitcpio.conf”
1
2
3
4
#
##   NOTE: If you have /usr on a separate partition, you MUST include the
#    usr, fsck and shutdown hooks.
HOOKS="base udev resume autodetect modconf block filesystems keyboard fsck"

Generalmente debes ponerlo después de udev y antes de autodetect. No te olvides de regnerar el initramfs:

initramfs
1
mkinitcpio -p linux

Si te molesta que la swap haga su pincha de swap (como en mi caso) puede deshabilitar el swapiness. Crea un fichero /etc/sysctl.d/00-noswap.conf y ponle adentro el siguiete valor: vm.swappiness=0

Y hibernan como los osos :D

Seguro te preguntarás como hacer que se ejecute algo al hibernar o despertar. Pues puedes crear una unit llamadas root-resume y root-suspend.

Por ejemplo, a mi en lo personal, me interesa parar el puto networkmanager cuando hiberno, ya que es poco probable que cuando despierte, esté en otro lugar y probablemente sin red. En mi caso yo habilito el networkmanager solo cuando lo necesito. En este caso, asumiré que para al hibernar y enciende al despertar.

“/etc/systemd/system/root-suspend.service”
1
2
3
4
5
6
7
8
9
10
[Unit]
Description=Local system suspend actions
Before=sleep.target

[Service]
Type=simple
ExecStart=/usr/bin/systemctl stop NetworkManager

[Install]
WantedBy=sleep.target

Al despertar arranca:

“/etc/systemd/system/root-resume.service ”
1
2
3
4
5
6
7
8
9
10
[Unit]
Description=Local system suspend actions
Before=sleep.target

[Service]
Type=simple
ExecStart=/usr/bin/systemctl start NetworkManager

[Install]
WantedBy=sleep.target

Todo lo que necesitas está en el artículo de la wiki de archlinux: Power Management

Si este artículo te resultó interesante, considere donar 0.003 BTC: 1LgL9cfT2StNk9gdedMJZseMnKJCEgQJdQ