|
1 #! /bin/bash |
|
2 # © 2011 Heiko Schlittermann <hs@schlittermann.de> |
|
3 # source: https://ssl.schlittermann.de/hg/check-by-nsca |
|
4 |
|
5 set -e |
|
6 |
|
7 unset ${!LC_*} LANG |
|
8 export LC_ALL=C |
|
9 ME=$(basename $0) |
|
10 |
|
11 function send() { send_nsca "$@"; } |
|
12 function debug_send() { echo "CMDLINE: $@"; cat; } |
|
13 send=send # changed by option |
|
14 |
|
15 |
|
16 # read defaults, if exist |
|
17 test -f /etc/defaults/$ME \ |
|
18 && source /etc/defaults/$ME |
|
19 |
|
20 hostname=$(hostname -f) |
|
21 svcname= |
|
22 nsca_host= |
|
23 nsca_port= |
|
24 |
|
25 tmp=$(getopt -n $0 -o H:S:p:d \ |
|
26 -l help,hostname:,servicename:,nsca-host:,nsca-port:,debug \ |
|
27 -- "$@") || exit 2 |
|
28 eval set -- "$tmp" |
|
29 |
|
30 while true; do |
|
31 opt="$1"; shift |
|
32 case "$opt" in |
|
33 -H|--hostname) hostname="$1"; shift;; |
|
34 -S|--svcname) svcname="$1"; shift;; |
|
35 --nsca-host) nsca_host="$1"; shift;; |
|
36 -p|--nsca-port) nsca_port="$1"; shift;; |
|
37 -h|--help) cat <<_USAGE |
|
38 Usage: $ME [options] -- {test} [test-options] |
|
39 -H|--hostname Hostname to be sent along the result ($hostname). |
|
40 -S|--servicename Servicename to be sent along the result. |
|
41 Use "-" to mark a host check. |
|
42 Use "" (the default) to have the servicename |
|
43 guessed from the test output. |
|
44 --nsca-host Destination host ($nsca_host) |
|
45 --nsca-port Destination port ($nsca_port) |
|
46 _USAGE |
|
47 exit 0;; |
|
48 -d|--debug) send="debug_$send";; |
|
49 --) break;; |
|
50 esac |
|
51 |
|
52 done |
|
53 |
|
54 set +e |
|
55 |
|
56 output=$("$@") |
|
57 rc=$? |
|
58 |
|
59 test "$svcname" || svcname="${output%% *}" |
|
60 |
|
61 tab=$'\x09' |
|
62 echo "$hostname$tab$svcname$tab$rc$tab$output" \ |
|
63 | $send -H "$nsca_host" ${nsca_port:+-p $nsca_port} |
|
64 |
|
65 # vim:sts=4 sw=4 aw ai sm et: |