diff options
author | Antoine Beaupre <anarcat@koumbit.org> | 2009-01-06 16:47:58 -0500 |
---|---|---|
committer | Antoine Beaupre <anarcat@koumbit.org> | 2009-01-06 16:47:58 -0500 |
commit | f1b2351569d450a15c06529ec3dcfbaca8365e33 (patch) | |
tree | e86c3ae0d72a780ec9f93f01be052fe4fad1418f /templates/checkbackups.sh | |
parent | f55b76f4aafbea8e5a42ea7ff0dfe8ca9ff10bec (diff) | |
download | puppet-backupninja-f1b2351569d450a15c06529ec3dcfbaca8365e33.tar.gz puppet-backupninja-f1b2351569d450a15c06529ec3dcfbaca8365e33.tar.bz2 |
cosmetic changes
Diffstat (limited to 'templates/checkbackups.sh')
-rwxr-xr-x | templates/checkbackups.sh | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/templates/checkbackups.sh b/templates/checkbackups.sh new file mode 100755 index 0000000..8d143a3 --- /dev/null +++ b/templates/checkbackups.sh @@ -0,0 +1,73 @@ +#!/bin/sh + +# This script is designed to check a backup directory populated with +# subdirectories named after hosts, within which there are backups of various +# types. +# +# Example: +# /home/backup: +# foo.example.com +# +# foo.example.com: +# rdiff-backup .ssh +# +# rdiff-backup: +# root home rdiff-backup-data usr var +# +# There are heuristics to determine the backup type. Currently, the following +# types are supported: +# +# rdiff-backup: assumes there is a rdiff-backup/rdiff-backup-data/backup.log file +# duplicity: assumes there is a dup subdirectory, checks the latest file +# dump files: assumes there is a dump subdirectory, checks the latest file +# +# This script returns output suitable for send_nsca to send the results to +# nagios and should therefore be used like this: +# +# checkbackups.sh | send_nsca -H nagios.example.com + +# XXX: taken from utils.sh from nagios-plugins-basic +STATE_OK=0 +STATE_WARNING=1 +STATE_CRITICAL=2 +STATE_UNKNOWN=3 +STATE_DEPENDENT=4 + +backupdir="<%= real_backupdir -%>" + +# XXX: this should be a complete backup registry instead +hosts=`ls $backupdir` +stampfile=$backupdir/.stamp + +cd $backupdir +for host in $hosts; do + flag="" + type="unknown" + if [ -d $host ]; then + # guess the backup type and find a proper stamp file to compare + # XXX: this doesn't check if the backup was actually successful + # XXX: the backup type should be part of the machine registry + if [ -d $host/rdiff-backup ]; then + flag=$host/rdiff-backup/rdiff-backup-data/backup.log + type="rdiff" + elif [ -d $host/dump ]; then + flag="$host/dump/`ls -tr $host/dump | tail -1`" + type="dump" + elif [ -d $host/dup ]; then + flag="$host/dup/`ls -tr $host/dup | tail -1`" + type="duplicity" + else + printf "$host\tbackups\t$STATE_UNKNOWN\tUNKNOWN unknown system\n" + continue + fi + touch -t `date +%Y%m%d0000.00` $stampfile + date=`ls -l $flag | awk '{print $6 " " $7}'` + if [ $flag -nt $stampfile ]; then + printf "$host\tbackups\t$STATE_OK\tOK timestamp $date\n" + else + printf "$host\tbackups\t$STATE_CRITICAL\tCRITICAL timestamp $date\n" + fi + else + printf "$host\tbackups\t$STATE_UNKNOWN\tUNKNOWN timestamp no directory\n" + fi +done |