Detección de error en script bash y envío de correo electrónico con Mailx

Como tenía muchos script bash que se pasaban realizando procesos automatizados a todas horas del día, y de los cuales no me enteraba si su ejecución era satisfactoria o no, me puse a investigar la forma más adecuada para que me avisaran de cualquier inconveniente.

Es así que me puse a investigar como se podía hacer para enviar un correo en caso de que la ejecución generara un error, el resultado de dicha investigación sigue a continuación.

Pero antes pongámonos en contexto, como los scripts de los que hablé corrían normalmente en distribuciones Linux CentOS o RedHat tenía previsto utilizar la aplicación nail para enviar los correos electrónicos a un servidor SMTP, pero como nail al final es tan solo un alias de mailx terminé utilizando en mis scripts esta última al estar disponible en la mayoría de las distribuciones (para no decir en todas).

En fin, lo mínimo que necesitamos en nuestro script para enviar las notificaciones de error vía email es lo que sigue a continuación:
#!/bin/bash
# Definición de variables.

EMAIL_SUBJECT="$HOSTNAME: Error en script"
EMAIL_MESSAGE="Error en script del servidor $HOSTNAME. Favor verificar su funcionamiento!"
EMAIL_ADDRESS="direccion-uno@midominio.com direccion-dos@midominio.com"
EMAIL_FROM="adminsrv@midominio.com"
EMAIL_SMTP="192.168.xxx.xxx"

# Forzamos un error para forzar el envío del correo.
`exit 5`

# Se verifica si fue exitosa o no la ejecución del script.
STATUS="$?"
if [ ! "$STATUS" = "0" ]; then
# Mensaje de error y envío de correo de error
echo "Salida de error: $STATUS"
echo "$EMAIL_MESSAGE - Error: $STATUS" | nail -r "$EMAIL_FROM" -s "$EMAIL_SUBJECT" -S smtp="$EMAIL_SMTP" "$EMAIL_ADDRESS"
fi

Como se puede observar al comienzo se definen una serie de variables con los datos de la dirección de envío y remitente, título y cuerpo del correo, como así también la dirección del servidor SMTP que en este caso no requiere autenticación. Al final se detecta si el programa culminó de forma incorrecta y en el caso de ser así se envía el correo mediante la aplicación mailx.

Y eso es todo, mailx tiene muchos más argumentos que pueden ser explotados, pero el ejemplo anterior contiene la información básica para montar el sistema de notificaciones en algunos de nuestros scripts.

Comentarios

Publicar un comentario