Suscríbete al feed RSS de los Artículos

Monthly ArchiveFebruary 2009



Utilidades admin on 06 Feb 2009

Usar cat como editor de texto

Esto lo aprendí la primera vez que instalé LFS y me parece bastante gracioso. cat es un comando clásico de UNIX que sirve para imprimir en pantalla el contenido de un archivo, y podemos usarlo también para concatenar archivos mediante los símbolos > y >>.

¡Pero puede usarse incluso como editor de texto! Creamos un archivo desde cero:

$ cat > /ruta/archivo.txt << "EOF"
Escribimos el texto <enter>
de tantas líneas como <enter>
queramos, y finalmente... <enter>
EOF

Ahora podemos comprobar si ha funcionado:

$ cat /ruta/archivo.txt
Escribimos el texto
de tantas líneas como
queramos, y finalmente...

Vemos que ha funcionado, hemos creado un archivo sin usar un editor de texto. Como aclaración, la palabra EOF significa End Of File, y podríamos usar cualquier otro indicador de fin de archivo, por ejemplo FIN o un punto.

GNU/Linux admin on 05 Feb 2009

Reiniciar Linux automáticamente en caso de un kernel Panic

Un Kernel Panic es un error del núcleo del sistema operativo (o de uno de sus módulos) que muestra un dump con información de depuración, esto puede ser útil a desarrolladores del sistema operativo para esclarecer las causas del error. Pero a la mayoría de los mortales no les va a servir de nada esa información casi críptica. Además, en caso que la máquina sea un servidor, lo último que queremos es que deje de dar servicio, entonces la solución pasa por programar un reinicio automático en caso de Kernel Panic. Para conseguir esto haremos lo siguiente, abrimos el archivo /etc/sysctl.conf y añadimos la siguiente línea:

kernel.panic = 10

Si ahora nuestro servidor decide morir, resucitará al cabo de 10 segundos, iniciando el arranque desde cero. El problema que esto supone es que podemos tener un servidor en problemas constantes y ni siquiera darnos cuenta.

Una posible solución sería hacer que la máquina envíe un correo electrónico (ver mi anterior arículo Enviar e-mail desde la consola) al administrador avisándole que se ha reiniciado, este correo electrónico puede incluir el contenido de /var/log/messages para entender qué es lo que estaba pasando justo antes del reinicio.

Utilidades admin on 02 Feb 2009

Enviar e-mail desde la consola

Si queremos que nuestro sistema pueda enviar correos electrónicos, debemos asegurarnos de que sendmail o algún otro MTA (Mail Transport Agent) esté configurado. O sea que empezamos ejecutando /etc/init.d/sendmail start, o /etc/rc.d/sendmail start, o service sendmail start, o lo que se corresponda a nuestra distribución GNU/Linux o sistema UNIX que estemos usando. Ahora ya podemos empezar.

Supongamos que estamos delante de una terminal y queremos enviar un mensaje a usuario@dominio.com, la forma más simple es la siguiente, ejecutamos

$ mail usuario@domunio.com

Ahora nos sale lo siguiente:

Subject: Título del mensaje <enter>
Empieza el texto del mensaje, y <enter>
sigue el texto hasta que <enter>
finalmente terminamos y <enter>
escribimos un punto <enter>
. <enter>
Cc: <enter>

Y el mensaje ya se ha enviado a usuario@dominio.com con el título indicado y el mensaje que hemos escrito. Como véis podemos añadir destinatarios adicionales en el campo Cc (Carbon Copy).

Pero, ¿y si queremos mandar un correo sin tener que interactuar en tiempo de envío, por ejemplo para mandar correos desde nuestros propios scripts? Pues todo lo que hemos visto se puede hacer por parámetros:

$ mail -s "Título del mensaje" usuario@dominio.com < /ruta/archivodetexto.txt

En el caso que hemos visto, el texto del mensaje lo recuperamos de un archivo de texto plano ASCII que se llama archivodetexto.txt y se encuentra en /ruta/, pero también podríamos incluir el propio cuerpo del correo en el comando si usamos una tubería:

$ echo "contenido del mensaje" | mail -s "Título del mensaje" usuario@dominio.com usuario4@dominio.com

Además vemos que podemos enviar el mensaje a distintos destinatarios. Pero ¿y si queremos enviar documentos adjuntos? El comando mail, que yo sepa, no puede hacerlo. Para ello podemos recurrir a mutt, un cliente de correo electrónico muy capaz y que posee una interface TUI (Text User Interface). Sin aprofundir en las capacidades de mutt, que son muchas, en este caso podríamos hacer lo siguiente:

$ mutt -s "Título del mensaje" -a /ruta/documento.pdf usuario@dominio.com < /ruta/archivodetexto.txt

En este caso, el usuario que posee el correo electrónico usuario@dominio.com recibirá un correo titulado “Título del mensaje”, el texto de este correo será el contenido de archivodetexto.txt, y se incluirá un PDF, documendo.pdf como archivo adjunto.

Voilà.