Network Connections, Stats and Bandwidth

check_stack_netgear.sh

Description:

Check stack status of Netgear switches
(Count in SNMP the physical number of units in the stack)

Current Version

1.0

Last Release Date

2015-05-21

Compatible With

  • Nagios 3.x

Owner

License

GPL


Project Files
Project Notes
Script usage: $0 -H host -e [-c community] [-v version] [-s 'any_snmp_args'] [-V] [--help] Options : -h, --help This help -H, --host Checked switch virtual IP -c, --community SNMP MIB (default = public) -e, --expected Expected switches count -p, --port SNMP port (default = 161) -s, --snmp-args Any SNMP args you d'like to add to snmpwalk command (credentials for SNMPv3, or whatever) -v, --version SNMP version (default = 2c) -V, --verbose Verbose output, mainly for debugging Example: check for 2 switches in stack: check_stack_netgear.sh -H 1.2.3.4 -e 2 Nagios definition example: define command{ command_name check_stack_netgear command_line $USER1$/check_stack_netgear.sh -H $HOSTADDRESS$ -e $ARG2$ } define service{ use generic-service host_name Switch-XXX service_description Stack with 2 members check_command check_stack_netgear!2 } How it work: It simply perform a snmpwalk on ENTITY-MIB:entPhysicalEntry (OID 1.3.6.1.2.1.47.1.1.1.1.7), search for 'Unit' devices and count them.
Reviews (2) Add a Review
I made a litle improvement
by brixsat, November 30, 2020

I added nagios performance data and check for errors, multicast, unicast and octetcs. Enjoy. #!/bin/bash ## # # receive statusinfo from netgear switches # # you can get all snmp-options with: # snmpwalk -m ALL -v 2c -c MYCOMMUNITY MYIPADDRESS .1.3.6.1.2.1 # # # Usage: # ./check_netgear_switch -h IP-ADDRESS -c SNMP-COMMUNITY -s STATUSCHECK # # # 2020-02-18: Version 1.3 \ Pit Wenkin # ## SYSUPTIME=0 SYSCONTACT='' SYSNAME='' SYSLOCATION='' SNMPVersion="2c" SNMPCommunity="public" SNMPTimeout="10" SNMPPort="161" #OID declarations OID_SYSDESCRIPTION="1.3.6.1.2.1.1.1.0" OID_SYSOBJECTID="1.3.6.1.2.1.1.2.0" OID_SYSUPTIME="1.3.6.1.2.1.1.3.0" OID_SYSCONTACT="1.3.6.1.2.1.1.4.0" OID_SYSNAME="1.3.6.1.2.1.1.5.0" OID_SYSLOCATION="1.3.6.1.2.1.1.6.0" OID_SYSSERVICES="1.3.6.1.2.1.1.7.0" OID_IFOPERSTATUS=".1.3.6.1.2.1.2.2.1.8" OID_IFLASTCHANGE=".1.3.6.1.2.1.2.2.1.9" # nagios return values export STATE_OK=0 export STATE_WARNING=1 export STATE_CRITICAL=2 export STATE_UNKNOWN=3 export STATE_DEPENDENT=4 intReturn=$STATE_OK # Memory free OID_MEM_FREE=".1.3.6.1.4.1.4526.11.1.1.4.1" # Memory available OID_MEM_AVAILABLE=".1.3.6.1.4.1.4526.11.1.1.4.2" # An estimate of the interface's current bandwidth in bits per second OID_IF_SPEED=".1.3.6.1.2.1.2.2.1.5" ## ## Multicast ## # The number of packets, delivered by this sub-layer to a higher (sub-)layer, which were addressed to a multicast address at this sub-layer. For a MAC layer protocol, this includes both Group and Functional addresses. OID_IN_MULTICAST_PACKETS=".1.3.6.1.2.1.31.1.1.1.2" # The total number of packets that higher-level protocols requested be transmitted, and which were addressed to a multicast address at this sub-layer, including those that were discarded or not sent. For a MAC layer protocol, this includes both Group and Functional addresses. OID_OUT_MULTICAST_PACKETS=".1.3.6.1.2.1.31.1.1.1.4" ## ## Broadcast ## # The number of packets, delivered by this sub-layer to a higher (sub-)layer, which were addressed to a broadcast address at this sub-layer. OID_IN_BROADCAST_PACKETS=".1.3.6.1.2.1.31.1.1.1.3" # The total number of packets that higher-level protocols requested be transmitted, and which were addressed to a broadcast address at this sub-layer, including those that were discarded or not sent. OID_OUT_BROADCAST_PACKETS=".1.3.6.1.2.1.31.1.1.1.5" ## ## Octets ## # The total number of octets received on the interface, including framing characters. This object is a 64-bit version of ifInOctets. OID_IF_IN_OCTETS=".1.3.6.1.2.1.31.1.1.1.6" # The total number of octets transmitted out of the interface, including framing characters. This object is a 64-bit version of ifOutOctets. OID_IF_OUT_OCTETS=".1.3.6.1.2.1.31.1.1.1.10" ## ## Unicast ## # The number of packets, delivered by this sub-layer to a higher (sub-)layer, which were not addressed to a multicast or broadcast address at this sub-layer. This object is a 64-bit version of ifInUcastPkts." OID_IF_IN_UNICAST=".1.3.6.1.2.1.31.1.1.1.7" # The total number of packets that higher-level protocols requested be transmitted, and which were not addressed to a multicast or broadcast address at this sub-layer, including those that were discarded or not sent. This object is a 64-bit version of ifOutUcastPkts. OID_IF_OUT_UNICAST=".1.3.6.1.2.1.31.1.1.1.11" ## ## Errors ## # For packet-oriented interfaces, the number of inbound packets that contained errors preventing them from being deliverable to a higher-layer protocol. For character-oriented or fixed-length interfaces, the number of inbound transmission units that contained errors preventing them from being deliverable to a higher-layer protocol. OID_IF_IN_ERRORS=".1.3.6.1.2.1.2.2.1.14" # For packet-oriented interfaces, the number of outbound packets that could not be transmitted because of errors. For character-oriented or fixed-length interfaces, the number of outbound transmission units that could not be transmitted because of errors. OID_IF_OUT_ERRORS=".1.3.6.1.2.1.2.2.1.20" usage() { echo "usage: ./check_netgear_switch -h [hostname] -c [community] -s [status]" echo "options:" echo " -h [snmp hostname] Hostname" echo " -c [community name] community name (ex: public)" echo " -p [snmp port] port for snmp request (default: 161)" echo " -P [port] port to check" echo " -n [number of ports] number of physical ports on device" echo " -o [options] additional options" echo " d only ports that are down (or anything except up)" echo " u only ports that are up" echo " -s [check] Check to be executed" echo " info System infos" echo " port Check statius specific port ('P' option)" echo " ports Listing of ports ('n' option defines number of port to check)" echo " uptime System uptime" echo " ports-octets Data on port (nagios perf output)" echo " ports-unicast Unicast on port (nagios perf output)" echo " ports-multicast Multicast on port (nagios perf output)" echo " ports-nagios Multicast/Unicast/Octets on port (nagios perf output)" echo " uptime System uptime" echo " -t [timeout] duration before doing an timeout in seconds - default 10s" echo "" echo "examples: ./check_netgear_switch -h 1.2.3.4 -c public -s info" echo " ./check_netgear_switch -h 1.2.3.4 -p 4321 -c public -s uptime -t 30" echo " ./check_netgear_switch -h 1.2.3.4 -c public -s ports -n 28" echo " ./check_netgear_switch -h 1.2.3.4 -c public -s port -P 1" exit 3 } if [ "$1" == "--help" ]; then usage; exit 0 fi while getopts c:h:n:o:p:P:s:t: OPTNAME; do case "$OPTNAME" in h) hostname="$OPTARG";; c) SNMPCommunity="$OPTARG";; o) options="$OPTARG";; n) ports="$OPTARG";; p) SNMPPort="$OPTARG";; P) port="$OPTARG";; s) status="$OPTARG";; t) SNMPTimeout="$OPTARG";; esac done function up_time { time=$1 pre=$2 suf=$3 up=$4 #returns uptime as human readable string if [[ $time =~ (.*):(.*):(.*):(.*).(.*) ]]; then DAYS=${BASH_REMATCH[1]} HOURS=${BASH_REMATCH[2]} MINUTES=${BASH_REMATCH[3]} SECONDS=${BASH_REMATCH[4]} MILLISECONDS=${BASH_REMATCH[5]} output=$output"$pre$DAYS days $HOURS hours $MINUTES minutes$suf" if [ $DAYS == "0" ] && [ $HOURS == "0" ] && [ $MINUTES -lt "5" ]; then intReturn=$STATE_CRITICAL if [ "$up" != '' ]; then output=$up"$pre$DAYS days $HOURS hours $MINUTES minutes$suf"$output fi else if [ $intReturn -lt $STATE_CRITICAL ] && [ $DAYS == "0" ] && [ $HOURS == "0" ] && [ $MINUTES -lt "15" ]; then intReturn=$STATE_WARNING if [ "$up" != '' ]; then output=$up"$pre$DAYS days $HOURS hours $MINUTES minutes$suf"$output fi fi fi fi } function get_timestamp { t=$1 if [[ $t =~ (.*):(.*):(.*):(.*).(.*) ]]; then DAYS=${BASH_REMATCH[1]} HOURS=${BASH_REMATCH[2]} MINUTES=${BASH_REMATCH[3]} SECONDS=${BASH_REMATCH[4]} MILLISECONDS=${BASH_REMATCH[5]} ALL=$((10#$DAYS*24*60*60*1000 + 10#$HOURS*60*60*1000 + 10#$MINUTES*60*1000 + 10#$SECONDS*1000 + 10#$MILLISECONDS)) echo $ALL fi } function sub_time { t1=$1 t2=$2; #substracts one uptime from another T1ALL=$(get_timestamp $t1) T2ALL=$(get_timestamp $t2) if [[ T1ALL != '' && T2ALL != '' ]]; then TS=$((T1ALL - T2ALL)) DAYS=$(($TS/(24*60*60*1000))) TS=$(($TS-($DAYS*24*60*60*1000))) HOURS=$(($TS/(60*60*1000))) TS=$(($TS-($HOURS*60*60*1000))) MINUTES=$(($TS/(60*1000))) TS=$(($TS-($MINUTES*60*1000))) SECONDS=$(($TS/(1000))) MILLSECONDS=$(($TS-$SECONDS)) echo "$DAYS:$HOURS:$MINUTES:$SECONDS.$MILLISECONDS" else echo 'ERROR' fi } if [ "$hostname" = "" ] || [ "$SNMPCommunity" = "" ] ; then usage else SNMPArgs=" -OQne -v $SNMPVersion -c $SNMPCommunity -t $SNMPTimeout $hostname:$SNMPPort" case "$status" in info) info=`snmpget $SNMPArgs $OID_SYSDESCRIPTION $OID_SYSUPTIME $OID_SYSCONTACT $OID_SYSNAME $OID_SYSLOCATION 2> /dev/null` if [ "$?" != "0" ] ; then output="CRITICAL - Problem with SNMP request, check user/password/host" intReturn=$STATE_CRITICAL ; else SYSDESCRIPTION=$(echo "$info" | grep $OID_SYSDESCRIPTION | sed 's/.* = //g' | sed 's/"//g') SYSUPTIME=$(echo "$info" | grep $OID_SYSUPTIME | sed 's/.* = //g' | sed 's/"//g') SYSCONTACT=$(echo "$info" | grep $OID_SYSCONTACT | sed 's/.* = //g' | sed 's/"//g') SYSNAME=$(echo "$info" | grep $OID_SYSNAME | sed 's/.* = //g' | sed 's/"//g') SYSLOCATION=$(echo "$info" | grep $OID_SYSLOCATION | sed 's/.* = //g' | sed 's/"//g') if [ "$SYSDESCRIPTION" != "" ] ; then output="Description - $SYSDESCRIPTIONn" fi if [ "$SYSUPTIME" != "" ] ; then up_time $SYSUPTIME 'Uptime - ' output=$output"n" fi if [ "$SYSCONTACT" != "" ] ; then output=$output"Contact - $SYSCONTACTn" fi if [ "$SYSNAME" != "" ] ; then output=$output"Name - $SYSNAMEn" fi if [ "$SYSLOCATION" != "" ] ; then output=$output"Location - $SYSLOCATION" fi if [ "$output" == "" ] ; then output="No information returned" intReturn=$STATE_WARNING fi fi ;; ports) if [ "$ports" == "" ] ; then output="Please define number of ports"; intReturn=$STATE_UNKNOWN; else for i in `seq 1 $ports`; do OID_PORTSTATUS="$OID_PORTSTATUS $OID_IFOPERSTATUS.$i $OID_IFLASTCHANGE.$i " done PORTSTATUS=`snmpget $SNMPArgs $OID_SYSUPTIME $OID_PORTSTATUS` if [ "$?" != "0" ] ; then output="CRITICAL - Problem with SNMP request, check user/password/host" intReturn=$STATE_CRITICAL; else SYSUPTIME=$(echo "$PORTSTATUS" | grep $OID_SYSUPTIME | sed 's/.* = //g' | sed 's/"//g') for i in `seq 1 $ports`; do portStatus[$i]=$(echo "$PORTSTATUS" | grep "$OID_IFOPERSTATUS.$((i)) " | cut -d "=" -f2 | sed 's/^[ t]*//;s/[ t]*$//') portChange[$i]=$(echo "$PORTSTATUS" | grep "$OID_IFLASTCHANGE.$((i)) " | tr -d 'n' | sed 's/.* = //g' | sed 's/"//g') case ${portStatus[$i]} in "1") portText[$i]="Up"; ;; "2") portText[$i]="Down"; ;; "3") portText[$i]="Testing"; ;; "4") portText[$i]="Unknown"; ;; "5") portText[$i]="Dormant"; ;; "6") portText[$i]="Not present"; ;; "7") portText[$i]="Lower layer down"; ;; esac if [ ( "$options" = "" ) -o ( "$options" = "u" -a "${portStatus[$i]}" = "1" ) -o ( "$options" = "d" -a "${portStatus[$i]}" != "1" ) ] ; then output=$output"Port $i - ${portText[$i]}t"; portUptime=$(sub_time $SYSUPTIME ${portChange[$i]}) up_time $portUptime '(since ' " ago)n" "Port $i - ${portText[$i]}t"; fi done fi fi ;; port) if [ "$port" == "" ] ; then output="Please define port to check"; intReturn=$STATE_UNKNOWN; else PORTSTATUS=`snmpget $SNMPArgs $OID_SYSUPTIME $OID_IFOPERSTATUS.$port $OID_IFLASTCHANGE.$port` if [ "$?" != "0" ] ; then output="CRITICAL - Problem with SNMP request, check user/password/host" intReturn=$STATE_CRITICAL; else portStatus=$(echo "$PORTSTATUS" | grep "$OID_IFOPERSTATUS.$((port)) " | cut -d "=" -f2 | sed 's/^[ t]*//;s/[ t]*$//') portChange=$(echo "$PORTSTATUS" | grep "$OID_IFLASTCHANGE.$((port)) " | tr -d 'n' | sed 's/.* = //g' | sed 's/"//g') SYSUPTIME=$(echo "$PORTSTATUS" | grep $OID_SYSUPTIME | sed 's/.* = //g' | sed 's/"//g') case $portStatus in "1") portText="Up"; intReturn=$STATE_OK;; "2") portText="Down"; intReturn=$STATE_CRITICAL;; "3") portText="Testing"; intReturn=$STATE_WARNING;; "4") portText="Unknown"; intReturn=$STATE_UNKNOWN;; "5") portText="Dormant"; intReturn=$STATE_CRITICAL;; "6") portText="Not present"; intReturn=$STATE_CRITICAL;; "7") portText="Lower layer down"; intReturn=$STATE_CRITICAL;; esac output=$output"Port $port - $portTextt"; portUptime=$(sub_time $SYSUPTIME $portChange) up_time $portUptime '(since ' " ago)n"; fi fi ;; uptime) SYSUPTIME=`snmpget $SNMPArgs $OID_SYSUPTIME | sed 's/.* = //g' | sed 's/"//g'` if [ "$?" != "0" ] ; then output="CRITICAL - Problem with SNMP request, check user/password/host"; intReturn=$STATE_CRITICAL; else up_time $SYSUPTIME 'Uptime - ' fi ;; ports-multicast) if [ "$ports" == "" ] ; then output="Please define number of ports"; intReturn=$STATE_UNKNOWN; else for i in `seq 1 $ports`; do OID_PORTSTATUS="$OID_PORTSTATUS $OID_IFOPERSTATUS.$i $OID_IFLASTCHANGE.$i $OID_IN_MULTICAST_PACKETS.$i $OID_OUT_MULTICAST_PACKETS.$i " done PORTSTATUS=`snmpget $SNMPArgs $OID_SYSUPTIME $OID_PORTSTATUS` if [ "$?" != "0" ] ; then output="CRITICAL - Problem with SNMP request, check user/password/host" intReturn=$STATE_CRITICAL; else output="Ok | " SYSUPTIME=$(echo "$PORTSTATUS" | grep $OID_SYSUPTIME | sed 's/.* = //g' | sed 's/"//g') for i in `seq 1 $ports`; do portStatus[$i]=$(echo "$PORTSTATUS" | grep "$OID_IFOPERSTATUS.$((i)) " | cut -d "=" -f2 | sed 's/^[ t]*//;s/[ t]*$//') portChange[$i]=$(echo "$PORTSTATUS" | grep "$OID_IFLASTCHANGE.$((i)) " | tr -d 'n' | sed 's/.* = //g' | sed 's/"//g') portInMulticast[$i]=$(echo "$PORTSTATUS" | grep "$OID_IN_MULTICAST_PACKETS.$((i)) " | sed 's/.* = //g' | sed 's/"//g') portOutMulticast[$i]=$(echo "$PORTSTATUS" | grep "$OID_OUT_MULTICAST_PACKETS.$((i)) " | sed 's/.* = //g' | sed 's/"//g') case ${portStatus[$i]} in "1") portText[$i]="Up"; ;; # Up "2") portText[$i]="Down"; ;; # Down "3") portText[$i]="Testing"; ;; # Testing "4") portText[$i]="Unknown"; ;; # Unknown "5") portText[$i]="Dormant"; ;; # Dormant "6") portText[$i]="Not present"; ;; # Not present "7") portText[$i]="Lower layer down"; ;; # Lower layer down esac if [ ( "$options" = "" ) -o ( "$options" = "u" -a "${portStatus[$i]}" = "1" ) -o ( "$options" = "d" -a "${portStatus[$i]}" != "1" ) ] ; then output=$output"Port_${i}_status=${portStatus[$i]}; Multicast_IN_$i=${portInMulticast[$i]};$MC_W;$MC_C;; Multicast_OUT_$i=${portOutMulticast[$i]};$MC_W;$MC_C;; " fi done fi fi ;; ports-unicast) if [ "$ports" == "" ] ; then output="Please define number of ports"; intReturn=$STATE_UNKNOWN; else for i in `seq 1 $ports`; do OID_PORTSTATUS="$OID_PORTSTATUS $OID_IFLASTCHANGE.$i $OID_IF_IN_UNICAST.$i $OID_IF_OUT_UNICAST.$i " done # echo snmpget $SNMPArgs $OID_SYSUPTIME $OID_PORTSTATUS PORTSTATUS=`snmpget $SNMPArgs $OID_SYSUPTIME $OID_PORTSTATUS` if [ "$?" != "0" ] ; then output="CRITICAL - Problem with SNMP request, check user/password/host" intReturn=$STATE_CRITICAL; else output="Ok | " SYSUPTIME=$(echo "$PORTSTATUS" | grep $OID_SYSUPTIME | sed 's/.* = //g' | sed 's/"//g') for i in `seq 1 $ports`; do portStatus[$i]=$(echo "$PORTSTATUS" | grep "$OID_IFOPERSTATUS.$((i)) " | cut -d "=" -f2 | sed 's/^[ t]*//;s/[ t]*$//') portInUnicast[$i]=$(echo "$PORTSTATUS" | grep "$OID_IF_IN_UNICAST.$((i)) " | sed 's/.* = //g' | sed 's/"//g') portOutUnicast[$i]=$(echo "$PORTSTATUS" | grep "$OID_IF_OUT_UNICAST.$((i)) " | sed 's/.* = //g' | sed 's/"//g') if [ ( "$options" = "" ) -o ( "$options" = "u" -a "${portStatus[$i]}" = "1" ) -o ( "$options" = "d" -a "${portStatus[$i]}" != "1" ) ] ; then output=$output"Unicast_IN_$i=${portInUnicast[$i]};$UC_W;$UC_C;; Unicast_OUT_$i=${portOutUnicast[$i]};$UC_W;$UC_C;; " fi done fi fi ;; ports-octets) if [ "$ports" == "" ] ; then output="Please define number of ports"; intReturn=$STATE_UNKNOWN; else for i in `seq 1 $ports`; do OID_PORTSTATUS="$OID_PORTSTATUS $OID_IFLASTCHANGE.$i $OID_IF_IN_OCTETS.$i $OID_IF_OUT_OCTETS.$i " done # echo snmpget $SNMPArgs $OID_SYSUPTIME $OID_PORTSTATUS PORTSTATUS=`snmpget $SNMPArgs $OID_SYSUPTIME $OID_PORTSTATUS` if [ "$?" != "0" ] ; then output="CRITICAL - Problem with SNMP request, check user/password/host" intReturn=$STATE_CRITICAL; else output="Ok | " SYSUPTIME=$(echo "$PORTSTATUS" | grep $OID_SYSUPTIME | sed 's/.* = //g' | sed 's/"//g') for i in `seq 1 $ports`; do portStatus[$i]=$(echo "$PORTSTATUS" | grep "$OID_IFOPERSTATUS.$((i)) " | cut -d "=" -f2 | sed 's/^[ t]*//;s/[ t]*$//') portInStatus[$i]=$(echo "$PORTSTATUS" | grep "$OID_IF_IN_OCTETS.$((i)) " | sed 's/.* = //g' | sed 's/"//g') portOutStatus[$i]=$(echo "$PORTSTATUS" | grep "$OID_IF_OUT_OCTETS.$((i)) " | sed 's/.* = //g' | sed 's/"//g') if [ ( "$options" = "" ) -o ( "$options" = "u" -a "${portStatus[$i]}" = "1" ) -o ( "$options" = "d" -a "${portStatus[$i]}" != "1" ) ] ; then output=$output"Octets_IN_$i=${portInStatus[$i]};$UC_W;$UC_C;; Octets_OUT_$i=${portOutStatus[$i]};$UC_W;$UC_C;; " fi done fi fi ;; ports-errors) if [ "$ports" == "" ] ; then output="Please define number of ports"; intReturn=$STATE_UNKNOWN; else for i in `seq 1 $ports`; do OID_PORTSTATUS="$OID_PORTSTATUS $OID_IFLASTCHANGE.$i $OID_IF_IN_ERRORS.$i $OID_IF_OUT_ERRORS.$i " done # echo snmpget $SNMPArgs $OID_SYSUPTIME $OID_PORTSTATUS PORTSTATUS=`snmpget $SNMPArgs $OID_SYSUPTIME $OID_PORTSTATUS` if [ "$?" != "0" ] ; then output="CRITICAL - Problem with SNMP request, check user/password/host" intReturn=$STATE_CRITICAL; else output="Ok | " SYSUPTIME=$(echo "$PORTSTATUS" | grep $OID_SYSUPTIME | sed 's/.* = //g' | sed 's/"//g') for i in `seq 1 $ports`; do portStatus[$i]=$(echo "$PORTSTATUS" | grep "$OID_IFOPERSTATUS.$((i)) " | cut -d "=" -f2 | sed 's/^[ t]*//;s/[ t]*$//') portInStatus[$i]=$(echo "$PORTSTATUS" | grep "$OID_IF_IN_ERRORS.$((i)) " | sed 's/.* = //g' | sed 's/"//g') portOutStatus[$i]=$(echo "$PORTSTATUS" | grep "$OID_IF_OUT_ERRORS.$((i)) " | sed 's/.* = //g' | sed 's/"//g') if [ ( "$options" = "" ) -o ( "$options" = "u" -a "${portStatus[$i]}" = "1" ) -o ( "$options" = "d" -a "${portStatus[$i]}" != "1" ) ] ; then output=$output"Errors_IN_$i=${portInStatus[$i]};$EC_W;$EC_C;; Errors_OUT_$i=${portOutStatus[$i]};$EC_W;$EC_C;; " fi done fi fi ;; ports-nagios) if [ "$ports" == "" ] ; then output="Please define number of ports"; intReturn=$STATE_UNKNOWN; else ## ## Octets ## OID_PORTSTATUS="" for i in `seq 1 $ports`; do OID_PORTSTATUS="$OID_PORTSTATUS $OID_IFLASTCHANGE.$i $OID_IF_IN_OCTETS.$i $OID_IF_OUT_OCTETS.$i " done # echo snmpget $SNMPArgs $OID_SYSUPTIME $OID_PORTSTATUS PORTSTATUS=`snmpget $SNMPArgs $OID_SYSUPTIME $OID_PORTSTATUS` if [ "$?" != "0" ] ; then output="CRITICAL - Problem with SNMP request, check user/password/host" intReturn=$STATE_CRITICAL; else output="Ok | " SYSUPTIME=$(echo "$PORTSTATUS" | grep $OID_SYSUPTIME | sed 's/.* = //g' | sed 's/"//g') for i in `seq 1 $ports`; do portStatus[$i]=$(echo "$PORTSTATUS" | grep "$OID_IFOPERSTATUS.$((i)) " | cut -d "=" -f2 | sed 's/^[ t]*//;s/[ t]*$//') portInStatus[$i]=$(echo "$PORTSTATUS" | grep "$OID_IF_IN_OCTETS.$((i)) " | sed 's/.* = //g' | sed 's/"//g') portOutStatus[$i]=$(echo "$PORTSTATUS" | grep "$OID_IF_OUT_OCTETS.$((i)) " | sed 's/.* = //g' | sed 's/"//g') if [ ( "$options" = "" ) -o ( "$options" = "u" -a "${portStatus[$i]}" = "1" ) -o ( "$options" = "d" -a "${portStatus[$i]}" != "1" ) ] ; then output=$output"Octets_IN_$i=${portInStatus[$i]};$UC_W;$UC_C;; Octets_OUT_$i=${portOutStatus[$i]};$UC_W;$UC_C;; " fi done fi ## ## Unicast ## OID_PORTSTATUS="" for i in `seq 1 $ports`; do OID_PORTSTATUS="$OID_PORTSTATUS $OID_IFLASTCHANGE.$i $OID_IF_IN_UNICAST.$i $OID_IF_OUT_UNICAST.$i " done # echo snmpget $SNMPArgs $OID_SYSUPTIME $OID_PORTSTATUS PORTSTATUS=`snmpget $SNMPArgs $OID_SYSUPTIME $OID_PORTSTATUS` if [ "$?" != "0" ] ; then output==$output"CRITICAL - Problem with SNMP request, check user/password/host" intReturn=$STATE_CRITICAL; else SYSUPTIME=$(echo "$PORTSTATUS" | grep $OID_SYSUPTIME | sed 's/.* = //g' | sed 's/"//g') for i in `seq 1 $ports`; do portStatus[$i]=$(echo "$PORTSTATUS" | grep "$OID_IFOPERSTATUS.$((i)) " | cut -d "=" -f2 | sed 's/^[ t]*//;s/[ t]*$//') portInUnicast[$i]=$(echo "$PORTSTATUS" | grep "$OID_IF_IN_UNICAST.$((i)) " | sed 's/.* = //g' | sed 's/"//g') portOutUnicast[$i]=$(echo "$PORTSTATUS" | grep "$OID_IF_OUT_UNICAST.$((i)) " | sed 's/.* = //g' | sed 's/"//g') if [ ( "$options" = "" ) -o ( "$options" = "u" -a "${portStatus[$i]}" = "1" ) -o ( "$options" = "d" -a "${portStatus[$i]}" != "1" ) ] ; then output=$output"Unicast_IN_$i=${portInUnicast[$i]};$UC_W;$UC_C;; Unicast_OUT_$i=${portOutUnicast[$i]};$UC_W;$UC_C;; " fi done fi ## ## Multicast ## OID_PORTSTATUS="" for i in `seq 1 $ports`; do OID_PORTSTATUS="$OID_PORTSTATUS $OID_IFOPERSTATUS.$i $OID_IFLASTCHANGE.$i $OID_IN_MULTICAST_PACKETS.$i $OID_OUT_MULTICAST_PACKETS.$i " done PORTSTATUS=`snmpget $SNMPArgs $OID_SYSUPTIME $OID_PORTSTATUS` if [ "$?" != "0" ] ; then output="CRITICAL - Problem with SNMP request, check user/password/host" intReturn=$STATE_CRITICAL; else SYSUPTIME=$(echo "$PORTSTATUS" | grep $OID_SYSUPTIME | sed 's/.* = //g' | sed 's/"//g') for i in `seq 1 $ports`; do portStatus[$i]=$(echo "$PORTSTATUS" | grep "$OID_IFOPERSTATUS.$((i)) " | cut -d "=" -f2 | sed 's/^[ t]*//;s/[ t]*$//') portChange[$i]=$(echo "$PORTSTATUS" | grep "$OID_IFLASTCHANGE.$((i)) " | tr -d 'n' | sed 's/.* = //g' | sed 's/"//g') portInMulticast[$i]=$(echo "$PORTSTATUS" | grep "$OID_IN_MULTICAST_PACKETS.$((i)) " | sed 's/.* = //g' | sed 's/"//g') portOutMulticast[$i]=$(echo "$PORTSTATUS" | grep "$OID_OUT_MULTICAST_PACKETS.$((i)) " | sed 's/.* = //g' | sed 's/"//g') case ${portStatus[$i]} in "1") portText[$i]="Up"; ;; # Up "2") portText[$i]="Down"; ;; # Down "3") portText[$i]="Testing"; ;; # Testing "4") portText[$i]="Unknown"; ;; # Unknown "5") portText[$i]="Dormant"; ;; # Dormant "6") portText[$i]="Not present"; ;; # Not present "7") portText[$i]="Lower layer down"; ;; # Lower layer down esac if [ ( "$options" = "" ) -o ( "$options" = "u" -a "${portStatus[$i]}" = "1" ) -o ( "$options" = "d" -a "${portStatus[$i]}" != "1" ) ] ; then output=$output"Port_${i}_status=${portStatus[$i]}; Multicast_IN_$i=${portInMulticast[$i]};$MC_W;$MC_C;; Multicast_OUT_$i=${portOutMulticast[$i]};$MC_W;$MC_C;; " fi done fi ## ## Errors ## OID_PORTSTATUS="" for i in `seq 1 $ports`; do OID_PORTSTATUS="$OID_PORTSTATUS $OID_IFLASTCHANGE.$i $OID_IF_IN_ERRORS.$i $OID_IF_OUT_ERRORS.$i " done # echo snmpget $SNMPArgs $OID_SYSUPTIME $OID_PORTSTATUS PORTSTATUS=`snmpget $SNMPArgs $OID_SYSUPTIME $OID_PORTSTATUS` if [ "$?" != "0" ] ; then output="CRITICAL - Problem with SNMP request, check user/password/host" intReturn=$STATE_CRITICAL; else SYSUPTIME=$(echo "$PORTSTATUS" | grep $OID_SYSUPTIME | sed 's/.* = //g' | sed 's/"//g') for i in `seq 1 $ports`; do portStatus[$i]=$(echo "$PORTSTATUS" | grep "$OID_IFOPERSTATUS.$((i)) " | cut -d "=" -f2 | sed 's/^[ t]*//;s/[ t]*$//') portInStatus[$i]=$(echo "$PORTSTATUS" | grep "$OID_IF_IN_ERRORS.$((i)) " | sed 's/.* = //g' | sed 's/"//g') portOutStatus[$i]=$(echo "$PORTSTATUS" | grep "$OID_IF_OUT_ERRORS.$((i)) " | sed 's/.* = //g' | sed 's/"//g') if [ ( "$options" = "" ) -o ( "$options" = "u" -a "${portStatus[$i]}" = "1" ) -o ( "$options" = "d" -a "${portStatus[$i]}" != "1" ) ] ; then output=$output"Errors_IN_$i=${portInStatus[$i]};$EC_W;$EC_C;; Errors_OUT_$i=${portOutStatus[$i]};$EC_W;$EC_C;; " fi done fi ## ## End ## fi ;; *) usage; exit 0 ;; esac echo -e $output exit $intReturn fi



Cool thanks a lot GS748TS need to be replace "Unit" with "Slot"
by clatramp, January 31, 2016

Hi there, than you for the script I have this output with GS748TS http://pastebin.com/6xePiCqn Could you add in the script to count the "Slot" if doesn't find the "Unit" thank you again



Add a Review

You must be logged in to submit a review.

Thank you for your review!

Your review has been submitted and is pending approval.

Recommend

To:


From:


Thank you for your recommendation!

Your recommendation has been sent.

Project Stats
Rating
4.5 (2)
Favorites
1
Views
9,620