使用python编写nagios脚本监控伺服器/交换机网卡状态

【转载】http://blog.chinaunix.net/uid-26978448-id-3389951.html

 

 

#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] <Community> <Host> <interface>'''

  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
       }

你可能感兴趣的:(python)