submit-via-nsca.sh
changeset 1 b8c814c738cf
parent 0 d3e953788d3f
child 2 e81beebd168f
equal deleted inserted replaced
0:d3e953788d3f 1:b8c814c738cf
       
     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: