Monitor static route of Linux Host via SNMP
Jump to navigation
Jump to search
Tested on CentOS 7 x64
1 Create Route Checker
- vi check_snmp_route.sh
#!/bin/bash # quick nagios route check via snmp export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin # default state for checks CSTATE=UNKNOWN # state to write when check fails FAIL_STATE=CRITICAL DST_HOST=$1 COMUNITY="$2" BASE_OID=.1.3.6.1.2.1.4.21.1 # check for this results CNET=$3 CMASK=$4 CGW=$5 if [ $# -ne 5 ] ; then echo "USAGE: $(basename $0) <HOST> <COMUNITY> <NETWORK> <NETMASK> <GATEWAS>" exit 1 fi # debug notes # echo DST_HOST=$1 # echo COMUNITY="$2" # echo CNET=$3 # echo CMASK=$4 # echo CGW=$4 # this are the results on dest host DNET=$(snmpwalk -v1 -c "$COMUNITY" $DST_HOST -On $BASE_OID.1.$CNET | cut -d= -f2- | awk '{print $2}') DMASK=$(snmpwalk -v1 -c "$COMUNITY" $DST_HOST -On $BASE_OID.11.$CNET | cut -d= -f2- | awk '{print $2}') DGW=$(snmpwalk -v1 -c "$COMUNITY" $DST_HOST -On $BASE_OID.7.$CNET | cut -d= -f2- | awk '{print $2}') if [ "$CNET" = "$DNET" ] ; then if [ "$CMASK" = "$DMASK" ] ; then if [ "$CGW" = "$DGW" ] ; then CSTATE=OK fi fi fi if [ "$CSTATE" = "OK" ] then echo "OK - $DNET/$DMASK $DGW" exit 0 else echo "$FAIL_STATE - $DNET/$DMASK $DGW" exit 2 fi
2 Create Nagios Comand
- vi commands-custom.cfg
define command{ command_name check_static_route # usage: HOST_IP COMUNITY NETWORK MASK GATEWAY command_line /etc/nagios/plugins/check_snmp_route.sh '$HOSTADDRESS$' '$ARG1$' '$ARG2$' '$ARG3$' '$ARG4$' }
3 Create Nagios Check
- vi host.cfg
define service { hosts myhost service_description MY Route check_command check_static_route!...secret...!10.20.0.0!255.255.0.0!192.168.2.1 }