scripts/run-cron-zabbix
author Tomas Zeman <tomas@functionals.cz>
Tue, 21 Feb 2023 13:03:45 +0100
changeset 40 8c421321123d
permissions -rwxr-xr-x
run-cron-zabbix

#!/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