#!/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) # ====================================================================== . $( dirname $0 )/inc_pluginfunctions self_APPNAME=$( basename $0 | tr [:lower:] [:upper:] ) self_APPVERSION=2.0 statusScript=/opt/cronwrapper/cronstatus.sh # ---------------------------------------------------------------------- # functions # ---------------------------------------------------------------------- function showHelp(){ cat <<EOF ______________________________________________________________________ $self_APPNAME v$self_APPVERSION (c) Institute for Medical Education - University of Bern Licence: GNU GPL 3 ______________________________________________________________________ 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 # ----------------------------------------------------------------------