PySNMP使用MIB文件时出错

Dra*_*kar 2 python mib pysnmp

我正在尝试在PySNMP中使用MIB文件.代码相当简单.没什么复杂的.只是试图在OID下获取信息.我正在使用的代码如下:

#!/usr/local/bin/python2.7

from pysnmp.smi import builder, view, error
from pysnmp.entity.rfc3413.oneliner import cmdgen

cmdGen = cmdgen.CommandGenerator()
mibBuilder = builder.MibBuilder()
mibPath = mibBuilder.getMibPath() + ( '/path/to/command/mibs', )
mibBuilder.setMibPath( *mibPath )
mibBuilder.loadModules( 
    'MIB-File',
    )
mibView = view.MibViewController( mibBuilder )
errorIndication, errorStatus, errorIndex, \
                 varBindTable = cmdGen.nextCmd( 
    cmdgen.CommunityData( 'Name', 'Community' ),
    cmdgen.UdpTransportTarget( ( 'IP Address', 161 ) ),
    ( ( '', 'serverName' ), ),
    )

print varBindTable
Run Code Online (Sandbox Code Playgroud)

我知道放入此数据的数据是准确的,因为当我使用asynCommandGenerator.asyncNextCmd相同的数据时udpTransportTarget,CommunityData它的工作没有问题.此外,我看到的错误非常特定于MibBuilder组件.

我看到的错误是:

Traceback(最近一次调用最后一次):

文件"./snmpcollectortest.py",第11行,in

'NS-MIB-SMIv2的',

在loadModules中输入文件"/usr/lib/python2.7/site-packages/pysnmp-4.2.1-py2.7.egg/pysnmp/smi/builder.py",第221行

pysnmp.smi.error.SmiError:MIB模块"/path/to/command/mibs/MIB-File.py"加载错误:搜索路径中找不到MIB文件"ASN1.py [co]"

更新:

我发现我没有安装M2Crypto,这就是为什么我找不到ASN1.py. 不过我已经纠正了这一点,我仍然得到同样的错误.

Ily*_*gof 7

getMibPath()/ setMibPath()方法已经过时.除非你.egg pysnmp或其MIB模块,否则它们不起作用.

您应该始终使用getMibSources()/ setMibSources()方法.这些适用于.egg和基于文件的设置.

mibPath = mibBuilder.getMibSources() + (builder.DirMibSource('/path/to/command/mibs'),)
mibBuilder.setMibSources(*mibPath)
mibBuilder.loadModules(
    'MIB-File',
)
Run Code Online (Sandbox Code Playgroud)

顺便说一句,pysnmp不需要M2Crypto,所需要的是pyasn1和pycrypto(仅适用于SNMPv3加密).

  • 实际上我会在另一个问题中提出这个问题.你回答了这一点,值得接受.谢谢伊利亚. (2认同)