Archivo etiqueta crontab

Shell Script para hacer copias de seguridad de nuestras bases de datos con ncftpput.

Pues ya estoy aquí de nuevo para escribir un shell script que realiza una copia de seguridad de nuestras Bases de Datos y mediante ncftpput las enviamos a nuestro servidor FTP.

# DATOS
SERVIDOR=GENTOO-VPS
FECHA=$(date +"%m-%d-%Y") # mm-dd-yyyy
EMAIL=su@email
ASUNTO="Backup SQL"
TMP=/home/backup/tmp

# DATOS BD
BD_USUARIO=root
BD_CLAVE=*******

# DATOS FTP
NCFTP="/usr/bin/ncftpput"
FTP=ftp.dominio.com
FTP_USUARIO=user
FTP_CLAVE=******
FTP_DESTINO="./servidores/$SERVIDOR/MySQL/"

for BD in `mysql -u$BD_USUARIO -p$BD_CLAVE -e "show databases" -B -N`
do
    mysqldump -u$BD_USUARIO -p$BD_CLAVE $BD > $TMP/$BD-$FECHA.sql
    $NCFTP -m -u $FTP_USUARIO -p $FTP_CLAVE $FTP $FTP_DESTINO/$BD/ $TMP/$BD-$FECHA.sql
    rm -f $TMP/$BD-$FECHA.sql
done

mail -s "$ASUNTO - $FECHA - $SERVIDOR" $EMAIL

Para optimizar la tarea podemos incluirla en nuestro crontab e incluimos la siguiente linea con la programación de la tarea y donde está ubicado nuestro script. Se ejecutará a las 2 de la madrugada todos los días:

crontab -e
0       2       *       *       *       /home/backup/backup-bd-diaria.sh

, , , , , , ,

No hay Comentarios

Monitorizando nuestras cuentas de correo y envio de alertas a nuestro email.

He creado este pequeño shell script que nos permitirá monitorizar todas las cuentas de correo de nuestros dominios. Para ello solo debemos indicarle unos pequeños parámetros y los límites en los que deseamos que nos envíe un reporte con una alerta.

# DATOS
FECHA=$(date +"%m-%d-%Y")
SERVIDOR=$(/usr/bin/hostname)
MAIL=/home/vpopmail/domains
REPORTE=/home/reporte.txt
EMAIL=su@correo.com
USUARIO=vpopmail # usuario de las cuentas de correo
ALERTA_DOMINIO=100 # espacio en mb
ALERTA_CUENTA=50 # espacio en mb

echo "Fecha: $FECHA" >>$REPORTE
echo "Limite dominio: $ALERTA_DOMINIO mb" >>$REPORTE
echo "Limite cuenta correo: $ALERTA_CUENTA mb" >>$REPORTE
echo "----------------------------------------------------" >>$REPORTE
for DOMINIO in `ls -l $MAIL | grep $USUARIO | awk {'print $9'}`
do
   USO_DOMINIO=`du -sm $MAIL/$DOMINIO | awk {'print $1'}`
   TOTAL=$[TOTAL+=$USO_DOMINIO]
   if [ $USO_DOMINIO -ge $ALERTA_DOMINIO ]; then
      echo "* $DOMINIO $USO_DOMINIO mb" >>$REPORTE
   fi
   for CUENTA in `ls -l $MAIL/$DOMINIO | awk {'print $9'}`
   do
      USO_CUENTA=`du -sm $MAIL/$DOMINIO/$CUENTA | awk {'print $1'}`
      if [ $USO_CUENTA -ge $ALERTA_CUENTA ]; then
         echo "$CUENTA@$DOMINIO $USO_CUENTA mb" >>$REPORTE
      fi
   done
done

echo "---------------------------------------------------" >>$REPORTE
echo "Total Ocupado: $TOTAL mb" >>$REPORTE
mail -s "Alerta Mail - $SERVIDOR - $FECHA" $EMAIL <$REPORTE
rm -f $REPORTE

* Este shell script ha sido probado en Gentoo y Fedora.

Por último solo debemos incluirlo en nuestro crontab para que se ejecute diariamente. En Gentoo es relativamente sencillo por lo que le podemos indicar que lo ejecute diariamente.

crontab -e
# incluimos la siguiente linea en nuestro contab.
@daily /home/scripts/monitor-correo.sh
# por último le damos permisos de ejecución.
chmod 744 /home/scripts/monitor-correo.sh

, , , , , , , ,

No hay Comentarios