diff --git a/check_lysrdiff b/check_lysrdiff index 86283a20a9282a4d8d0353e3b5e585dbd3faa0ca..0405ef7a5b29adf9823c5eb3c158416d105d8cbf 100755 --- a/check_lysrdiff +++ b/check_lysrdiff @@ -107,58 +107,60 @@ ACTIVITY=`wc -l < $state-active` PERF="activity=$ACTIVITY stale=$STALE failed=$FAILED" -if [ $FAILED -gt 10 ] -then - echo -n "CRITICAL - $FAILED failed backups" - if [ $STALE -gt 0 ] - then - echo -n " (also $STALE stale)" - fi - echo -n ": " - sed -n 's/--fail$//p' $state | list_jobs - echo ". | $PERF" - exit 2 -fi +worst=0 +state_word=OK +message="" -if [ $STALE -gt 10 ] -then - echo -n "CRITICAL - $STALE stale backups" - if [ $FAILED -gt 0 ] - then - echo -n " (also $FAILED failed)" - fi - ( sed -n 's/--fail$//p' $state; sed 's/--start$//' $state-stale; ) \ - | list_jobs - echo ". | $PERF" - exit 2 -fi +set_state() +{ + if [ $1 -gt $worst ] + then + worst=$1 + state_word=$2 + fi + + if [ -n "$3" ] + then + if [ -z "$message" ] + then + message="$3" + else + message="$message $3" + fi + fi +} if [ $FAILED -gt 0 ] then - echo -n "WARNING - $FAILED failed backups" - if [ $STALE -gt 0 ] - then - echo -n " (also $STALE stale)" - fi - echo -n ": " - sed -n 's/--fail$//p' $state | list_jobs - echo ". | $PERF" - exit 1 + msg="$FAILED failed backups: `sed -n 's/--fail$//p' $state | list_jobs`." + if [ $FAILED -gt 10 ] + then + set_state 2 CRITICAL "$msg" + else + set_state 1 WARNING "$msg" + fi fi if [ $STALE -gt 0 ] then - echo -n "WARNING - $STALE stale backups: " - sed 's/--start$//' $state-stale | list_jobs - echo ". | $PERF" - exit 1 + msg="$STALE stale backups: `sed 's/--start$//' $state-stale | list_jobs`." + if [ $STALE -gt 10 ] + then + set_state 2 CRITICAL "$msg" + else + set_state 1 WARNING "$msg" + fi fi if [ $ACTIVITY = 0 ] then - echo "WARNING - No activity. | $PERF" - exit 1 + set_state 1 WARNING "No activity." +fi + +if [ -z "$message" ] +then + set_state 0 OK "all ok." fi -echo "OK - all ok. | $PERF" -exit 0 +echo "$state_word - $message | $PERF" +exit $worst