-
-
Save vietcf/6d44494e8d422b59318c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
OK=0 | |
CRITICAL=2 | |
STATE=0 | |
PLUGIN_PATH="/usr/local/nagios/libexec/" | |
OID_sysDescr=SNMPv2-MIB::sysDescr.0 | |
OID_hostname=SNMPv2-MIB::sysName.0 | |
COMMUNITY=bimat | |
VERSION="1.1" | |
author="hafthanhf" | |
portdown="/tmp/pd_$host_ip" | |
admindown="/tmp/ad_$host_ip" | |
print_version() { | |
echo "$SCRIPTNAME" version "$VERSION" | |
echo "This nagios plugins comes with ABSOLUTELY NO WARRANTY." | |
echo "You may redistribute copies of the plugins under the terms of the GNU General Public License v2." | |
echo -e "Change log:\n Fix SuchIntance alert\n work on Cisco devices: 2960, 2960G, 3750, EX4200, EX3200 " | |
echo "Writen by $author - hanoi 10/4/2014" | |
} | |
print_help() { | |
echo "**** Check physical port on a network device ****" | |
echo -e " -H ADDRESS - Hostname to query (default: 127.0.0.1)\n -h print this help \n -V Print version" | |
echo "********************************" | |
echo "Exp: ./check_port -H 10.255.0.xxx" | |
echo "Befor using this plugin, you must shutdown all unuse port or it will make unnecessary alerts" | |
echo "**********Tested devices: Cisco 2960, 2960G, 3750, 3750G*********" | |
} | |
# Arguments | |
while getopts H:hV OPT | |
do | |
case "$OPT" in | |
H) host_ip="$OPTARG" ;; | |
h) print_help | |
exit $STATE ;; | |
V) print_version | |
exit $STATE ;; | |
*) print_help | |
exit 0 ;; | |
esac | |
done | |
############################ | |
######---Main----########### | |
############################ | |
COMMAND="snmpwalk -v 2c -c $COMMUNITY $host_ip" | |
#touch $portdown | |
#touch $admindown | |
#Get system infomation | |
#sysinfo=` $COMMAND $OID_sysDescr | awk 'NR==1 {print $4}'` | |
#hostname=`$COMMAND $OID_hostname | awk 'NR==1 {print $4}'` | |
################# INFO ############ | |
########################################### | |
#echo "############ $LS ########" | |
#echo $sysinfo | |
pd=`$COMMAND IF-MIB::ifOperStatus | grep down | grep -v ".51" | awk -F '[. ]' '{print $2}'` | |
echo "$pd" > /tmp/pd_$host_ip | |
#echo "Port admin down list:" | |
ad=`$COMMAND IF-MIB::ifAdminStatus | grep down | awk -F '[. ]' '{print $2}'` | |
echo "$ad" > /tmp/ad_$host_ip | |
re=`diff /tmp/pd_$host_ip /tmp/ad_$host_ip | grep "<" | awk '{print $2}'` | |
if [ "$re" = "" ]; then | |
echo "It seems to be OK!" | |
exit 0 | |
else | |
echo "Warning, these port down has recently down, plz check them: " | |
#x=`echo "$re" ` | |
for i in $re | |
do | |
alias=`$COMMAND IF-MIB::ifAlias.$i | awk '{print $4 $5}'` | |
descr=`$COMMAND IF-MIB::ifDescr.$i | awk '{print $4 $5}'` | |
echo "$descr $alias" | |
done | |
exit 2 | |
fi | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment