我正在尝试在 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
我知道放入其中的数据是准确的,就像我使用它时asynCommandGenerator.asyncNextCmd
一样udpTransportTarget
,CommunityData
它可以正常工作。另外,我看到的错误非常特定于 MibBuilder 组件。
我看到的错误是:
回溯(最近一次通话最后):
文件“./snmpcollectortest.py”,第 11 行,在
'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 的原因。但是我已经纠正了这个问题,但我仍然遇到同样的错误。