PySNMP扩展snmp-trap

pysnmp是用python语言开发的snmp开源项目,感觉没有net-snmp强大。但如果你只开发snmp 客户端的 trap,那么用pysnmp还是很简单的。

 

1、安装

下载pysnmppyasn1源码python setup.py安装,比较简单。

2、pysnmp扩展trap

直接帖代码了:

标准MIB

 

参数MIB

使用的是setVarBinds函数,注意函数的第二个参数,是一个list,每个list元素是一个字典变量。下边是一个很好的例子,开发时照猫画虎就OK了。

私有MIB

上面举的例子都是标准MIB中定义的。要扩展私有MIB会遇到什么问题呢?

问题在这句:pMod.apiTrapPDU.setGenericTrap(trapPDU, 'linkUp')

setGenericTrap的第二个参数是一个标准MIB时,pysnmp是可以识别的,但是如果换成了私有MIB比如RamUsageThresExceed啥的,就会报错:

pyasn1.error.PyAsn1Error: Can't coerce RamUsageThresExceed into integer

这需要修改pysnmp/proto下面的rfc1157.py,在里面定义class TrapPDU的地方

namedtype.NamedType('generic-trap', univ.Integer().cloneXXXXX)的那一行把你要定义的私有MIB加进来。

但是如果你发现pysnmp的版本不一样,找不到那一行,那你就把pysnmppyasn1目录建一个工程,在工程里面搜linkUp(注意大小写),看他们对linkUp做了什么,你就照猫画虎好了~~~

3、注意事项

 

几乎没有什么注意事项,勉强找一个的话那就是对标准的MIB属性,如ifIndex之类的,

在设置它的oid 的时候需要在后面加一个.0。比如:ifIndexOID值是(1,3,6,1,2,1,2,2,1,1),但是在给他赋值的时候,要写成(1,3,6,1,2,1,2,2,1,1,0)

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值