Chinaunix首页 | 论坛 | 博客
  • 博客访问: 95408
  • 博文数量: 5
  • 博客积分: 361
  • 博客等级: 入伍新兵
  • 技术积分: 140
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-16 16:10
文章分类

全部博文(5)

文章存档

2012年(5)

我的朋友

分类: LINUX

2012-10-29 17:26:39

脚本内容如下:

#cat check_snmp_int.py

点击(此处)折叠或打开

  1. #!/usr/bin/python

  2. #_*_coding: utf-8_*_

  3. '''
  4. Create date: 2012-10-29
  5. Last update: 2012-10-29
  6. Version: 1.0
  7. Description: Monitor interface status
  8. Author: Victor
  9. QQ:1409175531
  10. '''

  11. import sys
  12. import netsnmp

  13. def help():
  14.   print '''Usage:
  15. sys.argv[0] '''

  16. try:
  17.   session = netsnmp.Session(Version=2, Community=sys.argv[1], DestHost=sys.argv[2])
  18. except IndexError:
  19.   help()
  20.   sys.exit()

  21. oid01 = netsnmp.Varbind('ifOperStatus')
  22. oid02 = netsnmp.Varbind('ifDescr')
  23. oidlist01 = netsnmp.VarList(oid01)
  24. oidlist02 = netsnmp.VarList(oid02)
  25. rl01 = session.walk(oidlist01)
  26. rl02 = session.walk(oidlist02)

  27. '''1=>UP,2=>DOWN,3=>TESTING,4=>UNKNOWN,5=>DORMANT,6=>NotPresent,7=>lowerLayerDown'''

  28. try:

  29.   status = dict(zip(rl02,rl01))[sys.argv[3]]

  30.   if status == '1':
  31.     print '%s is UP ' % (sys.argv[3])
  32.     sys.exit(0)
  33.   elif status == '2':
  34.     print '%s is DOWN' % (sys.argv[3])
  35.     sys.exit(2)
  36.   elif status == '3':
  37.     print '%s is TESTING' % (sys.argv[3])
  38.     sys.exit(1)
  39.   elif status == '4':
  40.     print '%s is UNKNOWN' % (sys.argv[3])
  41.     sys.exit(1)
  42.   elif status == '5':
  43.     print '%s is DORMANT' % (sys.argv[3])
  44.     sys.exit(1)
  45.   elif status == '6':
  46.     print '%s is NotPresent' % (sys.argv[3])
  47.     sys.exit(1)
  48.   elif status == '7':
  49.     print '%s is lowerLayerDown' % (sys.argv[3])
  50.     sys.exit(1)
  51.   else:
  52.     print 'UNKNOWN'
  53.     sys.exit(3)

  54. except:
  55.   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
       }



本文乃何秋平原创文章,请勿转载。如须转载请详细标明转载出处。

阅读(5815) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~