Enviar un mail desde un script con el resumen de una copia de seguridad

Antes de entrar en materia, y dado que el concepto de Shell script va a ser utilizado en la presente entrada, transcribo una breve explicación del mismo:

«Un shell script es un fichero donde se puede introducir cualquier comando que se puede ejecutar en la shell. Se pueden incluir comandos UNIX, utilidades, emplear pipes, redireccionar entradas y salidas, definir y utilizar variables, además del uso de una serie de comandos UNIX creados para ser usados fundamentalmente en los shell scripts, como son condicionales y comandos para controlar el flujo del programa.»

Texto extraído de la siguiente fuente: https://www.iac.es/sieinvens/SINFIN/CursoUnix/cap8.php

Una vez definido, paso a explicar cómo podemos hacer un script, de tal forma que, al ejecutarlo, nos llegue un correo electrónico, en este ejemplo, un resumen de una copia de seguridad.

Pasos a realizar:

 

⊗ El primer paso consiste en instalar mailutils, (en el caso de que no lo tengamos ya instalado). Este paquete nos permite enviar correos, bien desde la línea de comandos, bien mediante un script.

Si necesitáramos instalar el paquete mailutils ejecutaríamos la siguiente sentencia:

# apt-get install mailutils 

⊗  En segundo lugar, y mediante un editor de texto, editamos el script de copias de seguridad que previamente teníamos.

⊗  Posteriormente, creamos una variable con un valor, el cual será el mail del destinatario:

email=»mail@iesvjp.es»

⊗  Y, para terminar, añadimos la siguiente sentencia:

cat $nombrefichero.log $nombrefichero.err|mail -s «Copia de seguridad» $email

Con este proceso lo que hacemos es concatenar el contenido de los ficheros .log y .err (los que se van a generar al ejecutar el script), al mail que creamos con el comando mail. Con -s añadimos un asunto. Y a continuación, utilizamos la variable, – creada en el paso previo -, que contiene la dirección de destino.

Script

 

#!/bin/bash
# Script para realizar copia de seguridad del directorio /home
marcaTiempo=`date +%d-%m-%y-%H.%M`
fichError=$marcaTiempo/error-$marcaTiempo.log
fichLog=$marcaTiempo/backup-$marcaTiempo.log
fichBackup=$marcaTiempo/backup-$marcaTiempo.tar.gz
mkdir $marcaTiempo
# Variable que almacena el correo electrónico de un destinatario
email="mail@iesvjp.es"
echo ------------------------------------------------- >$fichError
echo FICHERO DE ERRORES >>$fichError
echo COPIA DE SEGURIDAD DE /home >>$fichError
echo Equipo: `hostname` IP: `hostname -I` >>$fichError
echo ------------------------------------------------->>$fichError
echo ------------------------------------------------- >$fichLog
echo FICHERO DE LOG >>$fichLog
echo COPIA DE SEGURIDAD DE /home >>$fichLog
echo Equipo: `hostname` IP: `hostname -I` >>$fichLog
echo ------------------------------------------------->>$fichLog
tar -cvzf $fichBackup /home 2>>$fichError >>$fichLog
echo ------------------------------------------------->>$fichError
echo FIN BACKUP >>$fichError
echo ------------------------------------------------->>$fichError
echo ------------------------------------------------->>$fichLog
echo FIN BACKUP >>$fichLog
echo ------------------------------------------------->>$fichLog
# Enviar correo electrónico
cat $fichLog $fichError | mail -s "Copia de seguridad" $email

Y, llegados a este punto, podemos ver cómo, efectivamente, nos ha llegado el correo electrónico con un resumen de la copia de seguridad.

No quería finalizar sin antes agradecer al profesor de Implantación de sistemas operativos, D. Antonio, autor del script de copias de seguridad en el cual me he apoyado para realizar la entrada.