#!/bin/sh ##### Report StoreBackup Status ##### ##### Gets the status of the last backup run for a given ##### log file and reports result ##### ##### 2006 enbiz gmbh, Gerd Stammwitz # Commands used in this script PATH="" # TAC="/usr/bin/tail -r" # Sun Solaris TAC="/usr/bin/tac" # Gnu AWK="/usr/bin/gawk" CUT="/usr/bin/cut" # Setup PROGNAME=`/usr/bin/basename $0` REVISION="1.0" AUTHOR="(c) 2006 Gerd Stammwitz (http://www.enbiz.de/)" # Exit codes STATE_OK=0 STATE_WARNING=1 STATE_CRITICAL=2 STATE_UNKNOWN=3 print_usage() { echo $PROGNAME $REVISION echo $AUTHOR echo echo "Report status of last storeBackup run for Nagios." echo echo "Usage: $PROGNAME " echo } # Check parameter count and flags if [ $# -ne 1 ]; then print_usage exit $STATE_UNKNOWN fi # Get logfile name and check for existence LOGFILE=$1 if [ ! -f $1 ]; then echo "Couldn't open logfile $1" exit $STATE_UNKNOWN fi # Parse log file RESULT=`$TAC $1 | $AWK ' BEGIN { lcnt=0; lend=0; lbegin=0; lwarn=0; lerr=0; tsbegin=""; tsend=""; } { lcnt++; if ($1=="END") { lend++; tsend=$2 " "$3; what=""; for (i=5; i<=NF; i++) what=what " " $i; } if ($1=="BEGIN") { lbegin++; tsbegin=$2 " " $3; exit; } if ($1=="ERROR") { lerr++; if ($5=="exiting") { lend=1; tsend=$2 " "$3; } } if ($1=="WARNING") { lwarn++ } } END { state="OK"; if (lwarn>0) {state="WARNING";} if (lerr>0) {state="ERROR";} if (lbegin=0) {state="WRAPPED";} if (lend==0) {state="RUNNING";} printf "%s - errors=%d warnings=%d",state,lerr,lwarn; if (tsend!="") print " - finished " tsend; else print "" }'` STATE=$STATE_UNKNOWN case "`echo $RESULT| $CUT -f1 -d\" \"`" in OK) STATE=$STATE_OK ;; WARNING) STATE=$STATE_WARNING ;; ERROR) STATE=$STATE_CRITICAL ;; esac echo $RESULT exit $STATE