用PYTHON捕获SNMP TRAP

转载 2018年04月17日 09:11:41

接触到pysnmp是因为项目中需要捕获一硬件设备发出来的snmp trap,并针对不同的event trap作出反应(声音告警、执行一些命令)。
pysnmp是“SNMP framework for Python”,可以让我们在Python的环境下捕获snmp trap,还有snmpset,snmpwalk,snmpget等。

pysnmp和pysnmp-apps的安装
pysnmp的安装就是解压出来的pysnmp目录放到c:\Python23\Lib\site-packages\
建议也下载pysnmp-apps-0.0.2.tar.gz,这个文件包括一些pysnmp的简单工具,相当于例程。将解压出来的pysnmpap目录放到c:\Python23\Lib\site-packages\

使用
pysnmp-apps-0.0.2.tar.gz里面有pysnmptrapd.py和pysnmptrap.py两个文件,一个收一个发。
用以下命令可以查看使用帮助:
# python pysnmptrapd.py -h
# python pysnmptrap.py -h

用以下命令接受snmp traps:
# python pysnmptrapd.py -f -o mysnmp.log  192.168.0.1:162
如果在Unix,不加-f就使pysnmptrapd.py以deamon的方式运行。因为是在Windows上执行,在Windows里pysnmptrapd.py无法用deamon方式运行,需要-f参数。-o mysnmp.log表示收到的snmp trap写到mysnmp.log这个文件。192.168.0.1是我运行pysnmptrapd.py的Windows机器的IP地址,162是接收snmp trap的udp端口。这些参数是针对我这个项目的环境的。
记得在设备上将snmp trap的destination地址设为192.168.0.1,这样就可以收到snmp traps了。

用以下命令发送snmp traps:
# python pysnmptrap.py 192.168.0.1:162 -c public .1.3.6.1.4.1.2.3.1.2.1.2 a 192.168.0.250 0 0
192.168.0.1:162是发送目标地址和端口,public是community,.1.3.6.1.4.1.2.3.1.2.1.2是enterprise-OID,a 192.168.0.250表示发送端地址(Agent Addr)是192.168.0.250,最后Generic Trap是0,Specific Trap也是0

对收到的snmp trap作出反应
用以下命令让pysnmptrapd.py收到snmp trap后调用myEventTrapHandler.py作出反应:
# python pysnmptrapd.py -f -o mysnmp.log  -p myEventTrapHandler.py 192.168.0.1:162

查看pysnmptrapd.py的代码就知道有哪些参数传递给myEventTrapHandler.py

我修改了pysnmptrapd.py,使传递的参数符合我的需要,也改变了pysnmptrapd.py的一些参数缺省值,使这些缺省值适合项目环境。

总结
使用过pysnmp之后,发现利用pysnmp捕获snmp trap并作出反应是很轻松的事。现在我的Python程序可以捕获snmp trap,针对不同的trap播放WAV文件告警、执行一些命令,达到了预期的目标。

【Python】SNMP的安装及Python的调用

本文是介绍SNMP在Windows和Linux(Ubuntu)下的安装,以及通过Python调用其接口的文章。...
  • u012163234
  • u012163234
  • 2017-02-13 11:17:54
  • 4154

python通过SNMP协议收集服务器监控信息(安装、配置、示例)

安装snmp和启用python模块[root@test ~]# wget http://nchc.dl.sourceforge.net/project/net-snmp/net-snmp/5.7.3/...
  • mirahs
  • mirahs
  • 2015-11-03 17:54:31
  • 7338

关于python netsnmp模块 snmpwalk工具 timeout参数说明

写一个测试脚本:costtime.py #!/usr/bin/python #encoding=utf-8 #description:测试netsnmp.snmpwalk中Timeout值对应的具体...
  • ivnetware
  • ivnetware
  • 2016-07-26 19:16:29
  • 2181

吐槽python之snmp

计划逐步在网管开发中引入python 习惯了perl, 发现python居然没有没有CPAN T_T,不过还有PYPI ^_^ 接下来的问题就是,python没有snmp包。 粗略一搜 有2个...
  • laputa73
  • laputa73
  • 2012-07-06 16:19:22
  • 7533

【脚本语言系列】关于Python网络应用SNMP,你需要知道的事

如何使用SNMP
  • MosesAaron
  • MosesAaron
  • 2017-06-13 13:14:51
  • 266

python snmp自动化的实现

  • 2012年03月05日 12:30
  • 76KB
  • 下载

net-snmp启用python模块(python-netsnmp安装)

转自:http://blog.chinaunix.net/uid-26978448-id-3381386.html 装了N个版本,终于装好了,实在是不容易。 由于需要练手,准备将nagios的ba...
  • shanliangliuxing
  • shanliangliuxing
  • 2012-11-18 17:58:26
  • 7841

使用Net-SNMP和IPython

使用 IPython 同带 Python 绑定的 Net-SNMP 进行交互,用于管理 UNIX 和 Linux 系统。 数据中心和生产设施越来越多地采用简单网络管理协议(Simple Networ...
  • kumu_Linux
  • kumu_Linux
  • 2013-01-23 09:47:30
  • 4436

Python中Ctype调用snmp++库

写C++封装snmp++库的代码 // ctypett.cpp #include #include "snmp_pp/snmp_pp.h"using namespace Snmp_pp;using ...
  • jjp837661103
  • jjp837661103
  • 2016-10-07 15:40:15
  • 473
收藏助手
不良信息举报
您举报文章:用PYTHON捕获SNMP TRAP
举报原因:
原因补充:

(最多只允许输入30个字)