-
Hahn Axel (hahn) authoredHahn Axel (hahn) authored
check_cronstatus 2.77 KiB
#!/bin/bash
# ======================================================================
#
# NAGIOS CLIENT CHECK :: check status of cronjobs executed with cronwrapper
#
# REQUIREMENTS
# - client uses a cronjob with cronwrapper (it creates parsable logs)
#
# It returns
# - UNKNOWN if no job was found
# - OK if all jobs are ok
# - ERROR if minimum one job failes (wrong exitcode or is expired)
#
# ----------------------------------------------------------------------
#
# ah=axel.hahn@iml.unibe.ch
# ds=daniel.schueler@iml.unibe.ch
#
# 2017-10-13 v1.0 ah,ds
# 2017-10-17 v1.1 ah,ds remove PIPESTATUS for Debian8 compatibility
# 2019-04-30 v1.2 ah,ds show scriptlabel of failed jobs in 1st line
# 2020-02-28 v1.3 ah,ds ouput with separated error jobs and OK jobs
# 2020-03-05 v1.4 <axel.hahn@iml.unibe.ch> switch to ph.* helper functions
# 2022-02-28 v1.5 <axel.hahn@iml.unibe.ch> fix output of error counter
# 2022-08-23 v2.0 <axel.hahn@iml.unibe.ch> simplify it: use cronstatus.sh (it has exitcode >0 on errors now)
# 2023-07-27 v2.1 <axel.hahn@unibe.ch> update help page
# ======================================================================
. $( dirname $0 )/inc_pluginfunctions
self_APPVERSION=2.1
statusScript=/opt/cronwrapper/cronstatus.sh
# ----------------------------------------------------------------------
# functions
# ----------------------------------------------------------------------
function showHelp(){
local _self=$(basename $0)
cat <<EOF
$( ph.showImlHelpHeader )
Show status of all Cronjobs using Axels Cronwrapper
https://github.com/axelhahn/cronwrapper
The last run of each job is verified to these conditions:
- exitcode was 0
- last run is younger than given TTL
SYNTAX:
$(basename $0) [-h] [SCRIPT]
OPTIONS:
-h or --help show this help.
PARAMETERS:
SCRIPT optional: custom status script
default: $statusScript
EOF
}
# ----------------------------------------------------------------------
# MAIN
# ----------------------------------------------------------------------
# --- check param -h
case "$1" in
"--help"|"-h")
showHelp
exit 0
;;
*)
esac
test "$1" && statusScript="$1"
if [ ! -x "${statusScript}" ]; then
ph.setStatus "unknown"
ph.status Cronjob status - script not found/ not executable: "${statusScript}"
else
out=$( $statusScript )
rc=$?
if [ $rc -ne 0 ]; then
ph.setStatus "critical"
else
ph.setStatus "ok"
fi
ph.status Cronjob status $( echo "$out" | tail -1 )
echo "$out" | sed -r "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g"
fi
ph.exit
# ----------------------------------------------------------------------