euti.es

sitio personal

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

- Publicado en Sin categorizar por

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 “nn espacio en disco nn ”   >> 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)