[TIP] Sobreviviendo a un kernel panic remoto.

No son leyenda urbana. Los kernel panics existen…

Mientras el hardware esté sano, linux no falla, pero ¿Y si el hardware falla? ¿Y si falla en un servidor al cual no tenemos acceso físico? En esos casos es vital que la pc o el servidor remoto reinicien automáticamente después de un kernel panic.

El kernel de linux por defecto no reinicia el sistema en caso de un kernel panic de forma de que sea accesible por pantalla el volcado de memoria y el error específico, y esto no siempre es lo que se necesita (sobre todo si el sistema remoto no tiene un monitor instalado o no hay nadie presente físicamente en el lugar).

Para lograr que el kernel reinicie el sistema en caso de un kernel panic hay que modificar el contenido del archivo /proc/sys/kernel/panic:

~ # echo 5 >> /proc/sys/kernel/panic

Donde 5 es la cantidad de segundos que queremos esperar antes de que se produzca el reinicio del sistema.

Verificando el contenido del archivo:

~ # cat /proc/sys/kernel/panic
5

De esta forma el cambio de aplica de manera inmediata, pero como el contenido del archivo panic es volatil, los cambios se pierden luego del primer reinicio del sistema operativo.

Para que el cambio sea efectivo de forma permanente hay que implementarlo sobre el archivo /etc/sysctl.conf descomentariando la siguiente línea:

# When the kernel panics, automatically reboot in 3 seconds
#kernel.panic = 3

O bien, pasarle el parametro en cuestión al kernel durante el arranque desde el boot loader, por ejemplo, agregando panic=5 a /boot/grub/menu.lst:

kernel /boot/kernel root /dev/sda1 panic=5

Usando la combinación de el parámetro panic con la opción fallback de grub  es posible por ejemplo, testear un nuevo kernel de manera remota, de esta forma, en caso de un kernel panic arrancando un nuevo kernel grub puede arrancar al segundo intento desde un kernel viejo, sistema de archivos viejo, etc, etc, pero eso es tema para otro artículo.

[TIP] Contando cuantas direcciones de email hay en una cadena emails en linux.

Otro título sugerido: Yo contra el correo basura – Round 2

Prólogo:

Me acaba de llegar otra de esas odiosas cadenas de email en donde se prometen diferentes resultados en función de la cantidad de gente a la que uno la reenvíe, partiendo de la base de que con 10 personas es suficiente para que la persona que amas te llame por teléfono y llegando a sugerir que el hecho de ganar la lotería está íntimamente ligado al funcionamiento del protocolo SMTP encapsulado sobre TCP/IP.

Para que tengan una idea de la efectividad de este tipo de campañas inciadas por SPAMMERS como medio para recabar direcciones de correo electrónico, basta con contar cuantas hay contenidas en un solo mensaje de este tipo.

He guardado este mensaje en formato texto plano en cualquier lugar del disco rígido para luego poder contar cuantas direcciones de email contiene (incluyendo la mía, que sigue viaje, metida en el medio de la cadena, hasta llegarle a alguien que gana dinero por hacer spam).

En windows, seguramente tendrán que descargar algún programa de nombre parecido a «Advanced email counter and organizer» probablemente versión trial o shareware que podrán crackear bajando el respectivo crack de astalavista.box.sk o similares, esquivando previamente el virus camuflado contenido en el .zip.

Una vez crackeado, deberán ejecutarlo, ir a file / open / from archive o algo parecido y hacer uno o dos clicks mas, siempre y cuando sepan inglés.

En linux:

~ $ grep @ FW\:\ METAFISICA\ PURA…\ EL\ PODER\ DE\ LA\ ATRACCION.eml | wc
297 1010 21327

En una sola cadena de email, 1010 direcciones de correo electrónico diferentes.

¡Usen CCO, corten las cadenas de mensajes carajo!

Por si no se hubiera entendido como funciona mi invento contador de direcciones de email:

grep @ archivo.eml | wc

Simplemente filtrar con grep todas las líneas que tienen @ y pasárselas al WordCounter (wc) por medio de un | (pipe).

[howto] Arrancando desde la red, sin CD ni disco rígido.

Siguiendo la saga del post anterior en donde presentaba a dnsmasq como la navaja suiza del arranque remoto para clientes sin disco rígido – lo que se conoce como diskless o thin clients – completo el artículo con una breve explicación acerca de como poner en funcionamiento este sistema para que nos sirva como DHCP server, TFTP server y PXE server.

Englobando un poco la idea general, lo que se persigue es:

  1. Nunca mas tener que volver a usar un CD o un diskette para arrancar una PC.
  2. Arrancar un ordenador usando únicamente la red (Tenga este disco rígido o no)
  3. Disponer de una serie de imágenes para arrancar desde la red entre las que incluyo:
    • Algunas distribuciones de linux (Cualquier versión de Ubuntu y System Rescue CD)
    • Imágenes ISO de cualquier CD Booteable
    • Windows desde la red.
    • Imágenes de Diskette booteables.

Todo esto se consigue combinando tres piezas que tienen que interactuar entre si:

  • Dnsmasq
  • Grub4Dos
  • PXElinux

Sigue leyendo

[TIP] Reproducir videos de Youtube usando mplayer.

La idea es:

Copiar la URL (dirección del video de youtube) al clipboard (portapapeles) con CTRL + C o el botón derecho del mouse y ejecutar mplayer para que lo reproduzca con un atajo de teclado, bash de por medio.

En mi caso he usado lineakd que actualmente me está gestionando todas las teclas multimedia del teclado para llamar a mplayer desde una de estas teclas, pero para hacerlo mas universal, usaremos atajos de teclado:

Desde una terminal, paso por paso:

Instalar xclip y mplayer. No puedo dar instrucciones específicas para cada distribución de linux por que no las conozco, cada uno sabrá como instalar ambos paquetes en su linux, con apt-get, yum, pacman o lo que sea que usen. En Gentoo:

~ $ emerge xclip mplayer

Crear un archivo:

~ $ touch yt.sh

Hacerlo  ejecutable:

~ $ chmod +x yt.sh

Editar el archivo (si no se dispone de nano instalado, cualquier otro editor de texto sirve):

~ $ nano yt.sh

Copiar dentro del archivo yt.sh el siguiente contenido:

#!/bin/bash
youtube_url=`xclip -o|sed «s/ .*//»|head -n1`
mplayer -fs $(echo «http://youtube.com/get_video.php?$(curl -s $youtube_url | sed -n «/watch_fullscreen/s;.*\(video_id.\+\)&title.*;\1;p»)»)

Copiar yt.sh a algún lugar que quede dentro del PATH:

~ $ sudo cp yt.sh /usr/bin/

Crear un atajo de teclado que llame a yt.sh. De nuevo no puedo dar instrucciones específicas pero todos los gestores de ventanas (Gnome, KDE, XFCE, etc…) tienen algún modo de definir atajos de teclado.

He estado mirando un poco y para usar atajos de teclado en XCFE que es el entorno de escritorio que estoy usando hay que ir a Settings / Xfce 4 settings manager / Keyboard / Application shortcuts. (Sepan disculpar pero tengo XFCE instalado en inglés).

Por ejemplo, asociar el combo de teclas CTRL + M para que al ser pulsado ejecute yt.sh o si quieren llamarlo por el path completo, que llame a /usr/bin/yt.sh

Funcionamiento:

  1. Copiar la URL (la dirección del video de youtube) al portapapeles con CTRL + C o con el botón derecho del mouse desde su navegador.
  2. Presionar el combo de teclas que lanza yt.sh (supongamos que CTRL + M)
  3. Disfrutar del video en pantalla completa, reproducido por mplayer. Se puede salir del modo pantalla completa durante la reproducción presionando la tecla F y ver el estado de la preproducción presionando la tecla O (Por OSD). El volumen se controla con las teclas [/] y [*] facilmente ubicables en el teclado numérico. También se pueden corregir desfasajes entre el audio y el video usando las teclas [+] y [-].

La idea original de parsear la URL de youtube y pasarsela a mplayer la saqué de este blog. El funcionamiento de xclip de este otro.

Que lo disfruten…