X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=backupninja;h=e9587a3c58b6b9c410035376fc1e0d12cd699abd;hb=f329fc8f428190dd79b6aa3d255284f54366bf56;hp=3b3b16d0b363bb17ad7ea93a875d08a03feecc73;hpb=6bc45553f06e6c9b7c1162253bd0e28f3b07bbf2;p=matthijs%2Fupstream%2Fbackupninja.git diff --git a/backupninja b/backupninja index 3b3b16d..e9587a3 100755 --- a/backupninja +++ b/backupninja @@ -81,7 +81,7 @@ function printmsg() { echo -e "${color}$typestr: $@${endcolor}" >&2 fi - if [ "$print" -lt "$loglevel" ]; then + if [ $print -lt $loglevel ]; then if [ -w "$logfile" ]; then echo -e "${color}$typestr: $@${endcolor}" >> $logfile fi @@ -240,6 +240,13 @@ EOF fatal "Fatal, halting errors (always shown)" } +## +## this function handles the running of a backup action +## +## these globals are modified: +## fatals, errors, warnings, actions_run, errormsg +## + function process_action() { local file="$1" local suffix="$2" @@ -268,16 +275,24 @@ function process_action() { IFS=$' \t\n' fi + let "actions_run += 1" echo_debug_msg=1 + # call the handler: ret=`( . $scriptdir/$suffix $file )` retcode="$?" - warnings=`echo $ret | grep -e "^Warning: " | wc -l` - errors=`echo $ret | grep -e "^Error: \|^Fatal: " | wc -l` - if [ $errors != 0 ]; then + + _warnings=`echo $ret | grep "Warning: " | wc -l` + _errors=`echo $ret | grep "Error: " | wc -l` + _fatals=`echo $ret | grep "Fatal: " | wc -l` + + if [ $_fatals != 0 ]; then msg "*failed* -- $file" + errormsg="$errormsg\n== failures from $file ==\n\n$ret\n" + elif [ $_errors != 0 ]; then + msg "*error* -- $file" errormsg="$errormsg\n== errors from $file ==\n\n$ret\n" - elif [ $warnings != 0 ]; then + elif [ $_warnings != 0 ]; then msg "*warning* -- $file" errormsg="$errormsg\n== warnings from $file ==\n\n$ret\n" elif [ $retcode == 0 ]; then @@ -285,7 +300,11 @@ function process_action() { else msg "unknown -- $file" fi - echo_debug_msg=0 + + echo_debug_msg=0 + let "fatals += _fatals" + let "errors += _errors" + let "warnings += _warnings" } ##################################################### @@ -293,6 +312,7 @@ function process_action() { setupcolors conffile="/etc/backupninja.conf" +loglevel=3 ## process command line options @@ -355,12 +375,15 @@ fi ## Process each configuration file -info "====== starting at "`date`" ======" - # by default, don't make files which are world or group readable. umask 077 +# these globals are set by process_action() +fatals=0 errors=0 +warnings=0 +actions_run=0 +errormsg="" for file in $configdirectory/*; do [ -f $file ] || continue; @@ -383,7 +406,9 @@ done ## mail the messages to the report address -if [ "$reportemail" == "" ]; then doit=0 +if [ $actions_run == 0 ]; then doit=0 +elif [ "$reportemail" == "" ]; then doit=0 +elif [ $fatals != 0 ]; then doit=1 elif [ $errors != 0 ]; then doit=1 elif [ "$reportsuccess" == "yes" ]; then doit=1 elif [ "$reportwarning" == "yes" -a $warnings != 0 ]; then doit=1 @@ -391,15 +416,17 @@ else doit=0 fi if [ $doit == 1 ]; then + debug "send report to $reportemail" hostname=`hostname` + [ $warnings == 0 ] || subject="WARNING" + [ $errors == 0 ] || subject="ERROR" + [ $fatals == 0 ] || subject="FAILED" + { for ((i=0; i < ${#messages[@]} ; i++)); do echo ${messages[$i]} done echo -e "$errormsg" - } | mail $reportemail -s "backupninja: $hostname" + } | mail $reportemail -s "backupninja: $hostname $subject" fi -info "====== finished at "`date`" ======" - -############################################################