2016-03-17 180 views
1

我有两个MIBS文件,MIB1和MIB2,MIB2是从MIB1导入元素。我运行smilint和build-pysnmp-mib,实际上是smidump,因为我无法使用build-pysnmp-mib预载文件导出元素。pysnmp not loading 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'] 

我曾尝试更新SMIPATH,并手动也加载的.py模块

mibPath = mibBuilder.getMibSources() + (builder.DirMibSource('path'),) 
mibBuilder.setMibSources(*mibPath) 
mibBuilder.loadModules(
    'MIB1', 
) 

我在Ubuntu 14.04和Python 2.7.6运行pysnmp。

有人能帮我解决这个问题吗?

回答

1

请使用pysmi包中的mibdump.py工具将ASN.1 MIB编译为Python/pysnmp模块。该工具将处理所有依赖关系并生成更好的MIB。生成的MIB向后兼容所有以前的pysnmp版本。 pysmi软件包可以在Python 2上运行,即时可用。

由于pysnmp 4.3,不需要明确的ASN.1 MIB编译步骤 - pysnmp 4.3+将自动调用pysmi来查找/下载/编译ASN.1 MIB并将其交给pysnmp。

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

+0

有什么办法可以让python 2.7运行mibdump.py吗? Thks – jht

+0

mibdump.py适用于Python 2.7。你为什么认为它不? –

+0

我设法让它运行,但仍然是同样的错误,我应该在哪里复制新的.py文件? – jht