蒦嗳伱 发表于 2017-5-8 07:11:02

使用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]
查看完整版本: 使用python编写nagios脚本监控伺服器/交换机网卡状态