X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fupstream%2Fbackupninja.git;a=blobdiff_plain;f=src%2Fbackupninja.in;h=2a1b76ebae4c1d512a6a3f800a92a7e9573cc326;hp=34c0bd618e265fff7211d497609512985729b8e1;hb=a1c625fcc3c1bdcc81bb23aee3bea95051d6cc20;hpb=846213cfa48e026bdd7cacaebd46973207a809ba diff --git a/src/backupninja.in b/src/backupninja.in index 34c0bd6..2a1b76e 100755 --- a/src/backupninja.in +++ b/src/backupninja.in @@ -29,7 +29,7 @@ function setupcolors () { RED="\033[31;01m" OFF="\033[0m" CYAN="\033[36;01m" - COLORS=($BLUE $GREEN $YELLOW $RED $PURPLE) + COLORS=($BLUE $GREEN $YELLOW $RED $PURPLE $CYAN) } function colorize () { @@ -40,6 +40,7 @@ function colorize () { [ "$typestr" == "Warning" ] && type=2 [ "$typestr" == "Error" ] && type=3 [ "$typestr" == "Fatal" ] && type=4 + [ "$typestr" == "Halt" ] && type=5 color=${COLORS[$type]} endcolor=$OFF echo -e "$color$@$endcolor" @@ -54,6 +55,7 @@ function colorize () { # 2 - warnings - yellow # 3 - errors - red # 4 - fatal - purple +# 5 - halt - cyan # First variable passed is the error level, all others are printed # if 1, echo out all warnings, errors, or fatal @@ -74,9 +76,10 @@ function printmsg() { [ "$typestr" == "Warning" ] && type=2 [ "$typestr" == "Error" ] && type=3 [ "$typestr" == "Fatal" ] && type=4 + [ "$typestr" == "Halt" ] && type=5 typestr="" else - types=(Debug Info Warning Error Fatal) + types=(Debug Info Warning Error Fatal Halt) typestr="${types[$type]}: " fi @@ -95,7 +98,7 @@ function printmsg() { function logmsg() { if [ -w "$logfile" ]; then - echo -e `date "+%h %d %H:%M:%S"` "$@" >> $logfile + echo -e `LC_ALL=C date "+%h %d %H:%M:%S"` "$@" >> $logfile fi } @@ -118,6 +121,10 @@ function fatal() { printmsg 4 "$@" exit 2 } +function halt() { + printmsg 5 "$@" + exit 2 +} msgcount=0 function msg { @@ -173,7 +180,7 @@ function check_perms() { # simple lowercase function function tolower() { - echo "$1" | tr [:upper:] [:lower:] + echo "$1" | tr '[:upper:]' '[:lower:]' } # simple to integer function @@ -193,14 +200,17 @@ function toint() { # we grab the current time once, since processing # all the configs might take more than an hour. -nowtime=`date +%H` -nowday=`date +%d` -nowdayofweek=`date +%A` +nowtime=`LC_ALL=C date +%H` +nowday=`LC_ALL=C date +%d` +nowdayofweek=`LC_ALL=C date +%A` nowdayofweek=`tolower "$nowdayofweek"` function isnow() { local when="$1" set -- $when + + [ "$when" == "manual" ] && return 0 + whendayofweek=$1; at=$2; whentime=$3; whenday=`toint "$whendayofweek"` whendayofweek=`tolower "$whendayofweek"` @@ -252,19 +262,20 @@ The following options are available: When in debug mode, output to the console will be colored: EOF - debug=1 - debug "Debugging info (when run with -d)" - info "Informational messages (verbosity level 4)" - warning "Warnings (verbosity level 3 and up)" - error "Errors (verbosity level 2 and up)" - fatal "Fatal, halting errors (always shown)" + usecolors=yes + colorize "Debug: Debugging info (when run with -d)" + colorize "Info: Informational messages (verbosity level 4)" + colorize "Warning: Warnings (verbosity level 3 and up)" + colorize "Error: Errors (verbosity level 2 and up)" + colorize "Fatal: Errors which halt a given backup action (always shown)" + colorize "Halt: Errors which halt the whole backupninja run (always shown)" } ## ## this function handles the running of a backup action ## ## these globals are modified: -## fatals, errors, warnings, actions_run, errormsg +## halts, fatals, errors, warnings, actions_run, errormsg ## function process_action() { @@ -290,9 +301,9 @@ function process_action() { ret=$? IFS=$'\t\n' if [ $ret == 0 ]; then - debug "skipping $file because it is not $w" + debug "skipping $file because current time does not match $w" else - info ">>>> starting action $file (because it is $w)" + info ">>>> starting action $file (because current time matches $w)" run="yes" fi done @@ -322,10 +333,15 @@ function process_action() { _warnings=`cat $bufferfile | grep "^Warning: " | wc -l` _errors=`cat $bufferfile | grep "^Error: " | wc -l` _fatals=`cat $bufferfile | grep "^Fatal: " | wc -l` + _halts=`cat $bufferfile | grep "^Halt: " | wc -l` - ret=`grep "\(^Warning: \|^Error: \|^Fatal: \)" $bufferfile` + ret=`grep "\(^Warning: \|^Error: \|^Fatal: \|Halt: \)" $bufferfile` rm $bufferfile - if [ $_fatals != 0 ]; then + if [ $_halts != 0 ]; then + msg "*halt* -- $file" + errormsg="$errormsg\n== halt request from $file==\n\n$ret\n" + passthru "Halt: <<<< finished action $file: FAILED" + elif [ $_fatals != 0 ]; then msg "*failed* -- $file" errormsg="$errormsg\n== fatal errors from $file ==\n\n$ret\n" passthru "Fatal: <<<< finished action $file: FAILED" @@ -342,6 +358,7 @@ function process_action() { info "<<<< finished action $file: SUCCESS" fi + let "halts += _halts" let "fatals += _fatals" let "errors += _errors" let "warnings += _warnings" @@ -379,8 +396,8 @@ while [ $# -ge 1 ]; do singlerun=$2 processnow=1 else - echo "--run option must be fallowed by a backupninja action file" - fatal "--run option must be fallowed by a backupninja action file" + echo "--run option must be followed by a backupninja action file" + fatal "--run option must be followed by a backupninja action file" usage fi shift @@ -448,7 +465,7 @@ getconf usecolors "yes" getconf SLAPCAT /usr/sbin/slapcat getconf LDAPSEARCH /usr/bin/ldapsearch getconf RDIFFBACKUP /usr/bin/rdiff-backup -getconf CSTREAM=/usr/bin/cstream +getconf CSTREAM /usr/bin/cstream getconf MYSQLADMIN /usr/bin/mysqladmin getconf MYSQL /usr/bin/mysql getconf MYSQLHOTCOPY /usr/bin/mysqlhotcopy @@ -482,6 +499,7 @@ fi umask 077 # these globals are set by process_action() +halts=0 fatals=0 errors=0 warnings=0 @@ -500,6 +518,7 @@ fi for file in $files; do [ -f "$file" ] || continue + [ "$halts" = "0" ] || continue check_perms ${file%/*} # check containing dir check_perms $file @@ -545,7 +564,7 @@ if [ $doit == 1 ]; then previous="" for i in $(ls "$configdirectory"); do backuploc=$(grep ^directory "$configdirectory"/"$i" | @AWK@ '{print $3}') - if [ "$backuploc" != "$previous" ]; then + if [ "$backuploc" != "$previous" -a -n "$backuploc" ]; then df -h "$backuploc" previous="$backuploc" fi @@ -556,6 +575,9 @@ fi if [ $actions_run != 0 ]; then info "FINISHED: $actions_run actions run. $fatals fatal. $errors error. $warnings warning." + if [ "$halts" != "0" ]; then + info "Backup was halted prematurely. Some actions may not have run." + fi fi if [ -n "$reporthost" ]; then