使用python编写nagios脚本监控伺服器/交换机网卡状态
【转载】http://blog.chinaunix.net/uid-26978448-id-3389951.html#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
[*]'''
[*]
[*]importsys
[*]importnetsnmp
[*]
[*]defhelp():
[*] print'''Usage:
[*]sys.argv <Community> <Host> <interface>'''
[*]
[*]try:
[*] session =netsnmp.Session(Version=2,Community=sys.argv[1],DestHost=sys.argv[2])
[*]exceptIndexError:
[*] 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]]
[*]
[*] ifstatus =='1':
[*] print'%s is UP '%(sys.argv[3])
[*] sys.exit(0)
[*] elifstatus =='2':
[*] print'%s is DOWN'%(sys.argv[3])
[*] sys.exit(2)
[*] elifstatus =='3':
[*] print'%s is TESTING'%(sys.argv[3])
[*] sys.exit(1)
[*] elifstatus =='4':
[*] print'%s is UNKNOWN'%(sys.argv[3])
[*] sys.exit(1)
[*] elifstatus =='5':
[*] print'%s is DORMANT'%(sys.argv[3])
[*] sys.exit(1)
[*] elifstatus =='6':
[*] print'%s is NotPresent'%(sys.argv[3])
[*] sys.exit(1)
[*] elifstatus =='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
}
页:
[1]