#! /bin/sh # (c) 2008-2009 Tomas Ruzicka # requires the H150E-MIB and Nagios plugin's utils.sh # # TR-2009-05-12 # FIX - CPU load would set WARNING even if previous check's state was CRITICAL # ADD - check also the extension card status of all cards and sumarize it # MOD - uptime moved from the first place in returned string behind the system/cards state and CPU load # MOD - now using snmpget instead of snmpwalk and also the -O parameter instead of all the "sed"s # MOD - CPU warning/critical marks and the snmp community are optional now defaulting to 0 for the marks resp. public for the community string # # TR-2008-07-28 - initial release (skeleton based on nagios's 'check_log') PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin PROGNAME=`basename $0` PROGPATH=`dirname $0` REVISION="TR-2009-05-12" . $PROGPATH/utils.sh print_usage() { echo "Usage: $PROGNAME -H hostname_or_ip-address [-C community] [-w load -c load]" echo "Usage: $PROGNAME -V|--version" echo "Usage: $PROGNAME --help" } print_help() { #print_revision $PROGNAME $REVISION echo $PROGNAME $REVISION echo "" print_usage echo "" echo "This plugin checks hardware status of a Siemens HiPath 3000 phone system." echo "" #support } # some defaults RETVAL=$STATE_OK RETURN= STATE="OK" SNMP="snmpget -v 1 -m +H150E-MIB -O qve -c" SNMP2="snmpget -v 1 -m +H150E-MIB -O qv -c" PARAM_WARN=0 PARAM_CRIT=0 #check if at least one parameter set if [ $# -lt 1 ]; then print_usage exit $STATE_UNKNOWN fi # walk through all the parameters while test -n "$1"; do case "$1" in --help|-h) print_help exit $STATE_OK ;; --version|-V|-v) echo $PROGNAME $REVISION exit $STATE_OK ;; -H|--host) PARAM_HOST=$2 shift ;; -C|--community) PARAM_COMMUNITY=$2 shift ;; -w|--warn|--warning) PARAM_WARN=$2 shift ;; -c|--crit|--critical) PARAM_CRIT=$2 shift ;; esac shift done # check for host parameter if [ -z $PARAM_HOST ]; then echo "UNKNOWN - Host parameter missing" exit $STATE_UNKNOWN fi # check for SNMP community test -z $PARAM_COMMUNITY \ && TST=`$SNMP public $PARAM_HOST h150eSysState.0` \ || TST=`$SNMP $PARAM_COMMUNITY $PARAM_HOST h150eSysState.0` test -z $TST && TST=0 if [ $TST -gt 0 -a $TST -lt 6 ]; then test -z $PARAM_COMMUNITY && PARAM_COMMUNITY="public" SNMP="$SNMP $PARAM_COMMUNITY $PARAM_HOST" SNMP2="$SNMP2 $PARAM_COMMUNITY $PARAM_HOST" else echo "UNKNOWN - bad host ($PARAM_HOST) or community string ($PARAM_COMMUNITY) or SNMP not working" exit $STATE_UNKNOWN fi # overall system state H_SYSSTATE=`$SNMP h150eSysState.0` test $H_SYSSTATE -ge 2 && RETVAL=$STATE_WARNING test $H_SYSSTATE -ge 4 && RETVAL=$STATE_CRITICAL RETURN="Overall system state(`$SNMP2 h150eSysState.0`)" # state of the installed extension cards H_CARDCOUNT=`$SNMP numberOfSlotTableEntries.0` H_FAILEDCARDS=0 for i in `seq 1 $H_CARDCOUNT`; do H_CARDSTATE=`$SNMP cardState.$i` test $H_CARDSTATE -ge 2 -a $RETVAL -lt $STATE_WARNING && RETVAL=$STATE_WARNING test $H_CARDSTATE -ge 4 && RETVAL=$STATE_CRITICAL if [ $H_CARDSTATE -gt 1 ]; then test $H_FAILEDCARDS -eq 0 && RETURN="$RETURN; Failing expansion cards:" || RETURN="$RETURN," RETURN="$RETURN `$SNMP cardType.$i|sed -e 's/\"//g'`(`$SNMP2 cardState.$i`)" ((H_FAILEDCARDS=$H_FAILEDCARDS+1)) fi done test $H_FAILEDCARDS -eq 0 && RETURN="$RETURN; All $H_CARDCOUNT expansion cards(normal)" # CPU load in percent H_LOAD=`$SNMP h150eLoadLevel.0` RETURN="$RETURN; CPU Load $H_LOAD%" if [ $PARAM_WARN -gt 0 -a $PARAM_CRIT -gt $PARAM_WARN ]; then test $H_LOAD -gt $PARAM_WARN -a $RETVAL -lt $STATE_WARNING && RETVAL=$STATE_WARNING test $H_LOAD -gt $PARAM_CRIT && RETVAL=$STATE_CRITICAL RETURN="$RETURN (w/c $PARAM_WARN%/$PARAM_CRIT%)" fi # uptime UPTIME=`$SNMP sysUpTimeInstance` RETURN="$RETURN; Uptime: $UPTIME" test $RETVAL -eq $STATE_WARNING && STATE="Warning" test $RETVAL -eq $STATE_CRITICAL && STATE="Critical" echo "$STATE - $RETURN" exit $RETVAL