|
40
|
1 |
#!/bin/sh
|
|
|
2 |
|
|
|
3 |
# Generic run-cron script with output to be piped to zabbix_sender(1)
|
|
|
4 |
# Invocation:
|
|
|
5 |
# run-cron name zabbix-prefix prog
|
|
|
6 |
#
|
|
|
7 |
# where name is run name (logs, status etc.)
|
|
|
8 |
# zabbix-prefix is zabbix key prefix
|
|
|
9 |
# and prog is the script which will be invoked.
|
|
|
10 |
|
|
|
11 |
name=$1
|
|
|
12 |
zbx=$2
|
|
|
13 |
shift
|
|
|
14 |
shift
|
|
|
15 |
script="$@"
|
|
|
16 |
start=$(date +%s)
|
|
|
17 |
|
|
|
18 |
logdir=`dirname $name`
|
|
|
19 |
mkdir -p $logdir
|
|
|
20 |
[ $? -eq 0 ] || exit 1
|
|
|
21 |
|
|
|
22 |
l=$name-`date +%FT%T`
|
|
|
23 |
|
|
|
24 |
$script >$l.out 2>$l.err
|
|
|
25 |
status=$?
|
|
|
26 |
echo $status > $l.status
|
|
|
27 |
|
|
|
28 |
eta=$(expr $(date +%s) - $start)
|
|
|
29 |
out_sz=$(stat -f %z $l.out)
|
|
|
30 |
err_sz=$(stat -f %z $l.err)
|
|
|
31 |
|
|
|
32 |
[ -L $name-last.out ] && mv $name-last.out $name-prev.out
|
|
|
33 |
[ -L $name-last.err ] && mv $name-last.err $name-prev.err
|
|
|
34 |
[ -L $name-last.status ] && mv $name-last.status $name-prev.status
|
|
|
35 |
|
|
|
36 |
ln -sf $l.out $name-last.out
|
|
|
37 |
ln -sf $l.err $name-last.err
|
|
|
38 |
ln -sf $l.status $name-last.status
|
|
|
39 |
|
|
|
40 |
cat <<EOF
|
|
|
41 |
- $zbx.eta $eta
|
|
|
42 |
- $zbx.status $status
|
|
|
43 |
- $zbx.stdout $out_sz
|
|
|
44 |
- $zbx.stderr $err_sz
|
|
|
45 |
EOF
|
|
|
46 |
|