#!/bin/sh # $Id: check_rsnapshot,v 1.2 2013/10/13 03:20:52 andrew Exp $ # This relies on my run_rsnapshot wrapper that outputs things # via syslog, so really to custom to be much use. . /usr/local/libexec/nagios/utils.sh grep rsnapshot /var/log/messages | tail -25 | ( STATUS=UNKNOWN LAST_STATUS= CRITICAL= UNKNOWN= while read line; do LAST_STATUS=`echo $line | cut -c 1-15` if [ "$line" != "${line% Starting snapshot*}" ]; then STATUS=STARTED CRITICAL= UNKNOWN= elif [ "$line" != "${line% Finished snapshot*}" ]; then if [ $STATUS != 'CRITICAL' ]; then STATUS=FINISHED fi elif [ "$line" != "${line% ERROR*}" ]; then STATUS=CRITICAL [ -n "$CRITICAL" ] && CRITICAL="$CRITICAL\n" CRITICAL="$CRITICAL ${line#*]:}" elif [ $STATUS != CRITICAL ]; then STATUS=UNKNOWN [ -n "$UNKNOWN" ] && UNKNOWN="$UNKNOWN\n" UNKNOWN="$UNKNOWN ${line#*]:}" fi done [ $STATUS != UNKNOWN -a -n "$UNKNOWN" ] && UNKNOWN="\n$UNKNOWN" if [ $STATUS = "STARTED" -o $STATUS = "FINISHED" ]; then $ECHO "OK: $STATUS $LAST_STATUS $UNKNOWN" exit $STATE_OK elif [ $STATUS = UNKNOWN ]; then $ECHO "UNKNOWN: $LAST_STATUS $UNKNOWN" exit $STATE_UNKNOWN else $ECHO "CRITICAL: $LAST_STATUS $CRITICAL $UNKNOWN" exit $STATE_CRITICAL fi )