pysnmp未加载MIB

pysnmp未加载MIB,snmp,pysnmp,Snmp,Pysnmp,我有两个MIB文件,MIB1和MIB2,MIB2正在从MIB1导入元素。我已经运行了smilint和build pysnmp mib,实际上是smidump,因为我无法使用build pysnmp mib预加载导出元素的文件 使用smidump,我有两个MIB.py模块,MIB1.py和MIB2.py,但是当我编写SNMP代理时,pysnmp无法找到MIB1.py导出模块。我犯了这个错误 Traceback (most recent call last): File "snmpagent.p

我有两个MIB文件,MIB1和MIB2,MIB2正在从MIB1导入元素。我已经运行了smilint和build pysnmp mib,实际上是smidump,因为我无法使用build pysnmp mib预加载导出元素的文件

使用smidump,我有两个MIB.py模块,MIB1.py和MIB2.py,但是当我编写SNMP代理时,pysnmp无法找到MIB1.py导出模块。我犯了这个错误

Traceback (most recent call last):
  File "snmpagent.py", line 165, in <module>
    agent = SNMPAgent(objects)
  File "snmpagent.py", line 90, in __init__
    mibObject.objectType)
  File "/usr/lib/python2.7/dist-packages/pysnmp/smi/builder.py", line 299, in importSymbols
    self.loadModules(modName, **userCtx)
  File "/usr/lib/python2.7/dist-packages/pysnmp/smi/builder.py", line 259, in loadModules
    'MIB module \"%s\" load error: %s' % (modPath, traceback.format_exception(*sys.exc_info()))
pysnmp.smi.error.SmiError: MIB module "./MIB2.py" load error: ['Traceback (most recent call last):\n', '  File "/usr/lib/python2.7/dist-packages/pysnmp/smi/builder.py", line 255, in loadModules\n    exec(modData, g)\n', '  File "<string>", line 17, in <module>\n', '  File "/usr/lib/python2.7/dist-packages/pysnmp/smi/builder.py", line 302, in importSymbols\n    \'No module %s loaded at %s\' % (modName, self)\n', 'SmiError: No module MIB1 loaded at <pysnmp.smi.builder.MibBuilder instance at 0x7f99213c0b48>\n']
我在Ubuntu 14.04和Python 2.7.6上运行pysnmp

有人能帮我吗?

请使用软件包中的工具将ASN.1 MIB编译成Python/pysnmp模块。该工具将处理所有依赖项并生成更好的MIB。生成的MIB与所有以前的pysnmp版本向后兼容。pysmi包在python2和python3上运行

自PYSMP4.3以来,不需要显式的ASN.1 MIB编译步骤——PYSMP4.3+将自动调用pysmi来查找/下载/编译ASN.1 MIB并将其移交给PYSMPN


只要有可能,最好升级到最新的pysnmp。

有没有办法让mibdump.py使用python 2.7运行?Thksmibdump.py与Python 2.7配合使用。为什么您认为它不能运行?我设法使它运行,但仍然存在相同的错误,我应该将新的.py文件复制到哪里?您可以将MIB.py文件放置在任何位置,然后通过在脚本中调用.DirMibSource()来配置pysnmp以使用它。您能够成功运行它吗?我也在讨论同样的问题。
mibPath = mibBuilder.getMibSources() + (builder.DirMibSource('path'),)
mibBuilder.setMibSources(*mibPath)
mibBuilder.loadModules(
    'MIB1',
)