#!/bin/bash ###################################################### # CheckBackup v. 0.5 Ultima version: 06/05/07 # para cPanel servers Esteban Borges # # esteban.borges@gmail.com - http://www.encuentroalternativo.com ###################################################### # Chequea el estado general de tus backups, # tanto diarios como semanales, también puedes # adaptarlo para chequear backups mensuales. # # 1)Verifica que los backups esten configurados # 2)Verifica listando la fecha de los backups # 3)Informa sobre usuarios que no posen backups # 4)Informa y borra backups de usuarios inexistentes # (algo muy comun en servidores cpanel). ###################################################### # Utimas modificaciones # # v.0.5 - Soporte añadido par averificar backups # de usuarios en particiones diferentes a la standart # (/home) como "/home2" . ###################################################### banner () { echo "#######################################" echo "# CHEQUEANDO ESTADO DE BACKUPS" echo "#######################################" echo } ### Variables DAILY=/backup/cpbackup/daily DAILYLOG1=/root/checkbak/daily.log DAILYLOG=/root/checkbak/daily.log2 WEEKLY=/backup/cpbackup/weekly/ WEEKLYLOG1=/root/checkbak/weekly.log WEEKLYLOG=/root/checkbak/weekly.log2 RESTAN=/root/checkbak/restan BKDOMAINS=/root/checkbak/domains BKLOG=/root/checkbak/log BKTGZ=/root/checkbak/tgz_list DN=/dev/null ALERT="HOUSTON WE HAVE A PROBLEM!! -- No hay backups hechos --" ALERT2="Puede que sea una falsa alarma, corra el script nuevamente para comprobar" mkdir /root/checkbak/ 2> $DN ls -lah /var/cpanel/users | egrep -v root | awk '{print $9}' | grep [[:alnum:]] > $BKDOMAINS function checktype { rm -f $RESTAN while read DOMINIO do if ! $(ls $test_type | grep $DOMINIO 1> $DN) then echo $DOMINIO >> $RESTAN fi done < $BKDOMAINS } function listar { if [ -e $RESTAN ]; then echo "DETALLES ADICIONALES" echo "--------------------" echo "Users que parecen NO tener backup: " cat $RESTAN 2> $DN echo else echo "DETALLES ADICIONALES" echo "--------------------" echo "No hay errores tecnicos que comentar". echo fi } function borrar_old { ls -l *.tar.gz | awk '{print $9}' | sed -e 's/\.tar\.gz//g' > $BKTGZ while read TGZ_USER do if ! $(ls -lah /var/cpanel/users | egrep -v root | awk '{print $9}' | grep [[:alnum:]] | grep $TGZ_USER 1> $DN) then echo "El usuario $TGZ_USER es inexistente en el sistema, borrando..." rm $TGZ_USER.tar.gz -f fi done < $BKTGZ echo } function main_prog { banner cd $test_type rm $LOG1 -f 2> $DN rm $LOG -f 2> $DN ls -lth *.tar.gz > $LOG1 2> $DN if cat $LOG1 | grep "tar.gz" 1> $DN then listar echo "Listando Backups en $test_type" echo "---------------------------------------" cd $test_type ls -lth *.tar.gz | awk '{print $6,$7,"\t",$5,"\t", $8, "\t",$9}' echo "------------------------------------------" echo $(ls -lth $test_type/*.tar.gz | awk '{print $6,$7,"\t",$5,"\t", $8, "\t",$9}' | grep "tar.gz" | wc -l) backups echo checktype if [ -d $DAILY ]; then cd $DAILY echo "Verificando usuarios y backups en $DAILY.." borrar_old echo "Listo!" fi if [ -d $WEEKLY ]; then echo echo "Verificando usuarios y backups en $WEEKLY.." cd $WEEKLY borrar_old echo "Listo!" fi else echo $ALERT echo $ALERT2 echo fi } if [ -d /backup/cpbackup ]; then if [ -d $DAILY ]; then LOG1="$DAILYLOG1" LOG="$DAILYLOG" test_type="$DAILY" else LOG1="$WEEKLYLOG1" LOG="$WEEKLYLOG" test_type="$WEEKLY" fi main_prog else echo "ATENCION, LOS BACKUPS NO HAN SIDO CONFIGURADOS DESDE WHM" echo fi