run-cron-zabbix default tip
authorTomas Zeman <tomas@functionals.cz>
Tue, 21 Feb 2023 13:03:45 +0100
changeset 40 8c421321123d
parent 39 a0015fe2009a
run-cron-zabbix
scripts/run-cron-zabbix
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/run-cron-zabbix	Tue Feb 21 13:03:45 2023 +0100
@@ -0,0 +1,46 @@
+#!/bin/sh
+
+# Generic run-cron script with output to be piped to zabbix_sender(1)
+# Invocation:
+#	run-cron name zabbix-prefix prog
+#
+#	where name is run name (logs, status etc.)
+#	zabbix-prefix is zabbix key prefix
+#	and prog is the script which will be invoked.
+
+name=$1
+zbx=$2
+shift
+shift
+script="$@"
+start=$(date +%s)
+
+logdir=`dirname $name`
+mkdir -p $logdir
+[ $? -eq 0 ] || exit 1
+
+l=$name-`date +%FT%T`
+
+$script >$l.out 2>$l.err
+status=$?
+echo $status > $l.status
+
+eta=$(expr $(date +%s) - $start)
+out_sz=$(stat -f %z $l.out)
+err_sz=$(stat -f %z $l.err)
+
+[ -L $name-last.out ] && mv $name-last.out $name-prev.out
+[ -L $name-last.err ] && mv $name-last.err $name-prev.err
+[ -L $name-last.status ] && mv $name-last.status $name-prev.status
+
+ln -sf $l.out $name-last.out
+ln -sf $l.err $name-last.err
+ln -sf $l.status $name-last.status
+
+cat <<EOF
+- $zbx.eta $eta
+- $zbx.status $status
+- $zbx.stdout $out_sz
+- $zbx.stderr $err_sz
+EOF
+