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.