pysnmp学习(一)

转载 2018年04月17日 14:08:58

安装pysnmp:


编译安装的话,pysnmp需要用到asn.1,安装pysnmp的话需要先安装asn.1,不过我没有安装成功。


也可以使用easy_install pysnmp安装,不过我也没用安装成功,用的是mac,总是提示找不到编译器。


用mac很多东西都装不上,当然原因是我比较菜,并没用攻击mac的意思,而且我也不喜欢因为装个软件忙活半天,我就装了个ubuntu的虚拟机。


在ubuntu上使用apt-get安装, 软件包名称是python-pysnmp-se或者python-snmp-common。一条命令就搞定了。


在pysnmp里分别用getCmd,setCmd,nextCmd对应snmp里的get-request,set-request,get-next-request报文,pysnmp做的是snmp的管理进程,所以没有trap,get-response报文的定义。pysnmp里还有一个bulkCmd命令,和nextCmd差不多。


比较坑爹的事情发生了,下边是一段官方文档给出getCmd的示例代码,我运行了N次都是失败:


[python] view plain copy
  1. >>> from pysnmp.entity.rfc3413.oneliner import cmdgen  
  2. >>> errorIndicationerrorStatuserrorIndexvarBinds = cmdgen.CommandGenerator().getCmd(  
  3. ... cmdgen.CommunityData('my-agent''public'0),  
  4. ... cmdgen.UdpTransportTarget(('localhost'161)),  
  5. ... '1.3.6.1.2.1.1.1.0',  
  6. ... '1.3.6.1.2.1.1.2.0'  
  7. ... )  
  8. >>> print(errorIndication)  
  9. None  
  10. >>> print(errorStatus)  
  11. 0  
  12. >>> print(varBinds)  
  13. [(ObjectName(1.3.6.1.2.1.1.1.0), OctetString('Linux saturn 2.6.37.6-smp   
  14.     #2 SMP Sat Apr 9 23:39:07 CDT 2011 i686')),   
  15. (ObjectName(1.3.6.1.2.1.1.2.0), ObjectIdentifier(1.3.6.1.4.1.8072.3.2.10))]  


提示的内容大概意思就是元组只能和元组链接,弄了一个晚上也没搞明白怎么回事,只好放弃了。往下接着看吧,刚往下一看问题马上解决了,这是setCmd的代码:


[python] view plain copy
  1. >>> from pysnmp.entity.rfc3413.oneliner import cmdgen  
  2. >>> from pysnmp.proto import rfc1902  
  3. >>> errorIndication, errorStatus, errorIndex, varBinds = cmdgen.CommandGenerator().setCmd(  
  4. ... cmdgen.CommunityData('my-agent''public'1),  
  5. ... cmdgen.UdpTransportTarget(('localhost'161)),  
  6. ... ((1,3,6,1,2,1,1,1,0), rfc1902.OctetString('my system description'))  
  7. ... )  
  8. >>> print(errorIndication)  
  9. None  
  10. >>> print(errorStatus)  
  11. 17  
  12. >>> print(errorStatus.prettyPrint())  
  13. notWritable(17)  


这段代码里的mib中各个数字之间是逗号,而上边确实句号,把上边的字符串改成元组马上就ok,太TMD坑爹了,对比发现上边是两个mib,下边是一个mib,或许用字符串的形式一次可以get多个mib,但是我确实没有成功,而且经过各种实验,也没有能够实现一次获取多个mib。


还有一个比较郁闷的是官方没有给出api,只是在文档里给了一些例子,太不给力了。


其实这东西也没啥难的,就是那个错误的例子让我浪费了好多时间⋯⋯⋯⋯

PySNMP官方文档翻译---常用操作

常用操作在这个教程里,我们将会逐渐学习创建并运行一些不同的SNMP命令请求和通告。我们将使用PySNMP同步的使用最简单的高级API创建SNMP Engine在PySNMP里,SNMP Engine是...
  • u014793472
  • u014793472
  • 2016-09-23 17:34:59
  • 2386

PySNMP学习笔记(二)

原文地址:PySNMP学习笔记(二)作者:MichaelLing83关于getCmd的返回值。 The varBinds is a tuple of Managed Objects. Managed...
  • esonbest1234
  • esonbest1234
  • 2016-02-24 11:45:19
  • 351

ubuntu14.04 使用pysnmp SNMP trap 接受

下载 安装pysnmp-4.2.5.tar.gz (md5) https://pypi.python.org/pypi/pysnmp/ from pysnmp.carrier.asynso...
  • cauckfgf
  • cauckfgf
  • 2015-07-02 10:59:38
  • 1258

python利用pysnmp获取交换机级联接口

交换机里有一个arp表,利用arp表可以找到与其相连的交换机的mac地址,然后再从mac端口对应表里找出端口 def getTrunk(ip,port,agent,communication...
  • shangzhihaohao
  • shangzhihaohao
  • 2011-11-30 22:05:18
  • 5292

PySNMP--GET command

GET commandpysnmp.hlapi.getCmd(snmpEngine, authData, transportTarget, contextData, *varBinds, **opti...
  • u014793472
  • u014793472
  • 2017-02-23 10:25:53
  • 350

PySNMP扩展snmp-trap

pysnmp是用python语言开发的snmp开源项目,感觉没有net-snmp强大。但如果你只开发snmp 客户端的 trap,那么用pysnmp还是很简单的。 1、安装下载pysnmp和pyasn...
  • sealyao
  • sealyao
  • 2009-09-12 10:18:00
  • 7184

PySNMP学习笔记(一)

转自:http://blog.sina.com.cn/s/blog_54ce569c01009ccb.html SNMP standard introduces a set of ASN.1 lan...
  • wujingwen1111
  • wujingwen1111
  • 2014-02-12 10:19:41
  • 941

pysnmp安装

pysnmp依赖两个第三方的python库: (1) ASN.1 : Structure of Management Information:管理信息结构 用于定义通过网络管理协议可访问的...
  • wujingwen1111
  • wujingwen1111
  • 2013-12-26 18:37:26
  • 1077

一起学习PySNMP——理解什么是MIB

什么是MIB?什么是SMI MIB全称Management Information Base。 SMI全称Structure of Management Information。 简单的解释一...
  • esonbest1234
  • esonbest1234
  • 2016-02-24 11:45:10
  • 2609

pysnmp的安装

pysnmp的安装   pysnmp依赖两个第三方的python库: (1) ASN.1 : Structure of Management Information:管理信息结构 用于定义...
  • yshh126
  • yshh126
  • 2015-07-16 17:30:19
  • 853
收藏助手
不良信息举报
您举报文章:pysnmp学习(一)
举报原因:
原因补充:

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