#!/bin/bash

# Author: Boris Savelev <boris@etersoft.ru>, (c) 2007
# Author: Vitaly Lipatov <lav@etersoft.ru>, (c) 2010, 2012

# Example: check_rdiff-backup /var/local/backup backupname


OK_STATE=0
WARNING_STATE=1
CRITICAL_STATE=2
UNKNOWN_STATE=3

backup_path="$1"
backupname="$2"

EXIST=
err_count=0
info=0

LOGFILE=$backup_path/$backupname/rdiff-backup-data/backup.log

test -e "$LOGFILE" \
    && EXIST="1" \
    && err_count="$(tail $LOGFILE -n 3 | grep "Errors" | sed "s/Errors //g")" \
    && info="$(tail $LOGFILE -n 20 | grep "Time" | sed -n 'H;${x;s/\n/ /g;p}')"

if [ "$EXIST" = "1" ] ; then
    if [ ! $err_count ] ; then
        echo "UNKNOWN - Could't get session information of backup"
        exit $UNKNOWN_STATE
    fi
    if [ $err_count -le "10" ] ; then
        echo "OK -$info"
        exit $OK_STATE
    fi
    if [ $err_count -gt "10" ] ; then
        echo "WARNING - Error count is $err_count; $info"
        exit $WARNING_STATE
    fi
else
    echo "CRITICAL - Could't read backup.log"
    exit $CRITICAL_STATE
fi
