脚本内容如下:
#cat check_snmp_int.py- #!/usr/bin/python
- #_*_coding: utf-8_*_
- '''
- Create date: 2012-10-29
- Last update: 2012-10-29
- Version: 1.0
- Description: Monitor interface status
- Author: Victor
- QQ:1409175531
- '''
- import sys
- import netsnmp
- def help():
- print '''Usage:
- sys.argv[0] '''
- try:
- session = netsnmp.Session(Version=2, Community=sys.argv[1], DestHost=sys.argv[2])
- except IndexError:
- help()
- sys.exit()
- oid01 = netsnmp.Varbind('ifOperStatus')
- oid02 = netsnmp.Varbind('ifDescr')
- oidlist01 = netsnmp.VarList(oid01)
- oidlist02 = netsnmp.VarList(oid02)
- rl01 = session.walk(oidlist01)
- rl02 = session.walk(oidlist02)
- '''1=>UP,2=>DOWN,3=>TESTING,4=>UNKNOWN,5=>DORMANT,6=>NotPresent,7=>lowerLayerDown'''
- try:
- status = dict(zip(rl02,rl01))[sys.argv[3]]
- if status == '1':
- print '%s is UP ' % (sys.argv[3])
- sys.exit(0)
- elif status == '2':
- print '%s is DOWN' % (sys.argv[3])
- sys.exit(2)
- elif status == '3':
- print '%s is TESTING' % (sys.argv[3])
- sys.exit(1)
- elif status == '4':
- print '%s is UNKNOWN' % (sys.argv[3])
- sys.exit(1)
- elif status == '5':
- print '%s is DORMANT' % (sys.argv[3])
- sys.exit(1)
- elif status == '6':
- print '%s is NotPresent' % (sys.argv[3])
- sys.exit(1)
- elif status == '7':
- print '%s is lowerLayerDown' % (sys.argv[3])
- sys.exit(1)
- else:
- print 'UNKNOWN'
- sys.exit(3)
- except:
- sys.exit()
命令行执行脚本如下:
#python check_snmp_int.py public localhost etho
eth0 is UP //脚本执行完后的输出内容;
将check_snmp_int.py放在/usr/local/nagios/libexec目录,给执行权限。
commands.cfg配置如下:
define command{
command_name check_snmp_int
command_line $USER1$/check_snmp_int.py $ARG1$ $HOSTADDRESS$ $ARG2$
}
host.cfg配置如下:
define service{
use service
host_name test
service_description eth0
check_command check_snmp_int!public!eth0 // 如果监控的是交换机端口,这里需要写全称,如GigabitEthernet0/20
}
本文乃何秋平原创文章,请勿转载。如须转载请详细标明转载出处。
阅读(5894) | 评论(0) | 转发(0) |