Monitor static route of Linux Host via SNMP
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
}