Skip to content

Instantly share code, notes, and snippets.

@doublemarket
Created February 17, 2013 07:20
Show Gist options
  • Save doublemarket/4970526 to your computer and use it in GitHub Desktop.
Save doublemarket/4970526 to your computer and use it in GitHub Desktop.
#!/bin/bash
#END STATUS
OK=0
WARNING=1
CRITICAL=2
UNKNOWN=3
# snmpwalk command
SNMPWALK=/usr/local/net-snmp/bin/snmpwalk
# default parameter
RET=${OK}
IP="127.0.0.1"
COMMUNITY="public"
INTERFACE="eth0"
SPEED=""
WARN_FLG="FALSE"
CRIT_FLG="FALSE"
# get parameter
while getopts H:C:i:w:c: OPT
do
case $OPT in
"H") IP="$OPTARG" ;;
"C") COMMUNITY="$OPTARG" ;;
"i") INTERFACE="$OPTARG" ;;
"w") WARN_FLG="TRUE" ; WARN_TH="$OPTARG" ;;
"c") CRIT_FLG="TRUE" ; CRIT_TH="$OPTARG" ;;
esac
done
# check parameter
if [ ${WARN_FLG} = "FALSE" ] && [ ${CRIT_FLG} = "FALSE" ] ; then
echo "Parameter Error : -w or -c is required entry"
exit ${WARNING}
fi
# get speed
INDEX=`${SNMPWALK} -t 10 -v 2c -c ${COMMUNITY} ${IP} ifDescr | grep ${INTERFACE} | sed 's/.*\.//' | sed 's/ .*//'`
SPEED_bps=`${SNMPWALK} -t 10 -v 2c -c casnmp ${IP} ifSpeed.${INDEX} | awk '{print $4}'`
SPEED=`expr ${SPEED_bps} / 1000000`
if [ -z ${SPEED} ] ; then
echo "Can't get ${INTERFACE} speed"
exit ${WARNING}
fi
# get result
if [ ${WARN_FLG} = "TRUE" ] && [ ${CRIT_FLG} = "TRUE" ] ; then
if [ ${SPEED} -lt ${CRIT_TH} ] ; then
RET=${CRITICAL}
fi
if [ ${SPEED} -lt ${WARN_TH} ] && [ ${OFFSET} -ge ${CRIT_TH} ] ; then
RET=${WARNING}
fi
fi
if [ ${WARN_FLG} = "TRUE" ] && [ ${CRIT_FLG} = "FALSE" ] ; then
if [ ${SPEED} -lt ${WARN_TH} ] ; then
RET=${WARNING}
fi
fi
if [ ${WARN_FLG} = "FALSE" ] && [ ${CRIT_FLG} = "TRUE" ] ; then
if [ ${SPEED} -lt ${CRIT_TH} ] ; then
RET=${CRITICAL}
fi
fi
# information
echo "${INTERFACE} speed is ${SPEED}Mbps now"
exit ${RET}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment