2016-03-17 46 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