尝试运行基于MIB的SNMP脚本并遇到问题。虽然我知道安装了包含该功能的模块,但它无法运行Counter64功能。 MIB模块是自动生成的,因此我尝试在安装缺失的模块后重新生成它,但它没有解决问题。
代码如下:
#!/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()
mibSources = mibBuilder.getMibSources() + ( builder.DirMibSource( '/path/to/command/mibs', ), )
mibBuilder.setMibSources( *mibSources )
print mibBuilder.getMibSources()
mibBuilder.loadModules(
'NS-MIB-smiv2',
)
mibView = view.MibViewController( mibBuilder )
errorIndication, errorStatus, errorIndex, \
varBindTable = cmdGen.nextCmd(
cmdgen.CommunityData( 'Name', 'Community' ),
cmdgen.UdpTransportTarget( ( 'IP Address', 161 ) ),
( ( '', 'serverName' ), ),
)
print varBindTable
我知道环境的变量是正确的,因为我可以使用人工分配的OID查询它们而没有任何问题。我收到的回溯是:
Traceback (most recent call last):
File "./snmpcollectorexample.py", line 12, in <module>
'NS-MIB-smiv2',
File "/usr/lib/python2.7/site-packages/pysnmp-4.2.1-py2.7.egg/pysnmp/smi/builder.py", line 221, in loadModules
pysnmp.smi.error.SmiError: MIB module "/path/to/command/mibs/NS-MIB-smiv2.py" load error: name 'Counter64' is not defined
没有人有推荐吗? Counter64是pycopia-SMI Python模块的一部分,我已经确认它已经安装。但我不确定如何解决这个问题。
答案 0 :(得分:1)
找到问题所在。出于某种原因,通过所有转换命令运行我的MIB时build-pysnmp-mib
包装器没有将Counter64条目添加到mibBuilder.importSymbols()
中。手动添加它并且它一直向前移动。