Envío automático de email por línea de comandos en Debian (GNU/Linux)

| 30 junio 2009
Hace ya tiempo comenté que me quería coger un servidor dedicado para hacer pruebas, cosa que al final hice, y entre ellas, he implementado un pequeño sistema de envío automático de alertas por email del estado del propio servidor. Para ello he usado dos cosas:

Envío de email (sendEmail)

Para esto he utilizado una herramienta muy sencilla que está disponible para Debian, y no es otro que sendEmail, un cliente de correo electrónico que funciona por línea de comandos. Si vuestro sistema no lo tuviera ya instalado, valdrá con un simple:
apt-get install sendemail
Si no me equivoco no hace falta instalar nada más. Simplemente necesitarás un servidor de correo electrónico de libre acceso, dado que con este sistema no se envía cifrado el correo. En mi caso, utilizo el servidor de Google, cuya dirección SMTP es gmail-smtp-in.l.google.com.

El uso de la aplicación es tan simple como el resto de los comandos en Debian: nombre de aplicación seguido de sus parámetros. En este caso, tal y como indican en su web, los parámetros son los siguientes:

pincha para ver a tamaño completo

Una opción interesante es generarse un script donde construyas el mensaje que deseas enviar, y que posteriormente podrás programar con el cron. Un ejemplo de esto sería:
##### genero el fichero a enviar
mailfile=/tmp/mail


##### añado texto plano
echo -e "hora actual: "         > mailfile


##### añado resultado de aplicaciones

# hora y minuto con formato
echo -e $(date +"%k:%M") >> mailfile

# espacio ocupado por una carpeta
echo -e "\n\n espacio en disco \n\n "   >> mailfile
du -Sc -B M --time /home/               >> mailfile

# espacio ocupado en el sistema
df -t ext3 -B M                         >> mailfile


##### envío el email
sendEmail \
-f  "nombre_y_direccion_del_emisor" \
-t direccion_destino@servidor.com \
-s gmail-smtp-in.l.google.com \
-u texto de asunto \
-m  \
-o message-file=mailfile \
-a nombre_de_fichero_adjunto
De este modo, se pueden añadir resultados de aplicaciones, dando más riqueza a las alertas.

Tareas programadas (cron)


Una vez generado ese fichero (pongamos que se llama "/tmp/alerta.sh"), debemos configurar el cron para que se lance de manera automática. Para editar el cron, deberemos editar el crontab:
crontab -e
Y sobre esto hay mucha información, aunque básicamente tendrás que indicar los parámetros que deben coincidir con tu programación (en el minuto tal, cada hora cual...). En nuestro ejemplo valdría con añadir una línea tipo:
00 * * * * sh /tmp/alerta.sh
Para que se lanzara cada hora en punto.


Sobre esto del cron, quiero dar públicamente las gracias a Iván, que me lo presentó formalmente :)




+ info:
  sendEmail | Web oficial
  Wikipedia | Cron (Unix)

4 comments:

Elisa_chan dijo...

lo q yo sabia... eres un friki de mucho cuidao >_< casi casi no me entero xDDDDDDD
pero me parece muy interesante si... aunq me suena a medio chino, pero interesante si...!!

eres un makina!

Iván dijo...

Sí ya lo decía yo, al final logro hacer de ti un linuxero de mucho cuidado... :-P.

Gracias a ti por esa cuenta en el server "pa' lo mío".

Saludos, Iván.

Euti dijo...

@Elisa_chan, no sabes cuán friki puedo llegar a ser. Si esto te sorprende... jajaja.

@Iván, de lo tuyo ya sabes que yo encantao ;) Y sí, un poco linuxero me estoy haciendo, y he de reconocer que toda la culpa es tuya (que no se ofenda mi amigo Chus, gran maestro donde los haya, pero hasta que no te pones a tocar... la teoría es muy bonita pero na) :)

Elisa_chan dijo...

sorprenderme a un nivel exagerao no, porq se q hay miles de cosas que me kedan por aprender y otras tantas q nunca sabre sobre la informatica, pero cada entrada aprendo algo nuevo de tu parte xD y 'abre mi mente' a la de cosas 'escondidas' que hay en tantos codigos xDDD

q eres un friki muy muy mucho ya lo sabiamos xD
saludetes!