2015-01-12 40 views
0

好日子,pysnmp mib2dev.py失敗

我試圖生成使用pysnmp的mib2dev.py工具snmpsim模擬器。我不斷得到一個ValueError: Empty module name,我不知道爲什麼。我確保我擁有最新的pysnmp,pycrypt和snmpsim。我在Mac上運行。

所需軟件包與easy_install一起安裝。我正在使用brew的python 2.7.8。我已經刪除了所有包和python,然後重新安裝它們。這沒有幫助。

我確實檢討了這個stack overflow question,但他們得到了一個不同的錯誤。

此MIB取自here。我無法顯示我的實際mib,但它產生與這個小型mib相同的錯誤。

我沒有問題編碼代理了。在這個時候,我只能找到只有標量或僅限於表的代理的例子。如果您通過使用pysnmp構建代理的例子知道一些優秀的資源,那將非常棒。

MIB:

MY-MIB DEFINITIONS ::= BEGIN 

IMPORTS 
     OBJECT-TYPE, Integer32, NOTIFICATION-TYPE, enterprises 
        FROM SNMPv2-SMI 
; 

myCompany  OBJECT IDENTIFIER ::= {enterprises 42} 

testCount OBJECT-TYPE 
    SYNTAX Integer32 
    MAX-ACCESS read-only 
    STATUS current 
    DESCRIPTION "A sample count of something." 
    ::= {myCompany 1} 

testDescription OBJECT-TYPE 
    SYNTAX OCTET STRING 
    MAX-ACCESS read-only 
    STATUS current 
    DESCRIPTION "A description of something" 
    ::= {myCompany 2} 

testTrap NOTIFICATION-TYPE 
    STATUS current 
    DESCRIPTION "Test notification" 
    ::= {myCompany 3} 

END 

從集結pysnmp-MIB的.py腳本:

$ mib2dev.py --pysnmp-mib-dir="." --mib-module=MY-MIB.py 
Traceback (most recent call last): 
    File "/usr/local/bin/mib2dev.py", line 4, in <module> 
    __import__('pkg_resources').run_script('snmpsim==0.2.4', 'mib2dev.py') 
    File "build/bdist.macosx-10.10-x86_64/egg/pkg_resources/__init__.py", line 696, in run_script 

    File "build/bdist.macosx-10.10-x86_64/egg/pkg_resources/__init__.py", line 1614, in run_script 

    File "/usr/local/lib/python2.7/site-packages/snmpsim-0.2.4-py2.7.egg/EGG-INFO/scripts/mib2dev.py", line 240, in <module> 
    [ builder.ZipMibSource(m).init() for m in mibDirs ] 
    File "/Library/Python/2.7/site-packages/pysnmp-4.2.5-py2.7.egg/pysnmp/smi/builder.py", line 45, in init 

    File "/Library/Python/2.7/site-packages/pysnmp-4.2.5-py2.7.egg/pysnmp/smi/builder.py", line 103, in _init 

ValueError: Empty module name 

回答

0

更新:由於smilint和pysnmp建議,你需要MODILE認同條款添加到您的原MIB像這樣的文件:

IMPORTS 
    MODULE-IDENTITY, OBJECT-TYPE, Integer32, NOTIFICATION-TYPE, enterprises 
       FROM SNMPv2-SMI 
; 

my-MIB MODULE-IDENTITY 
    LAST-UPDATED "201501120000Z" 
    ORGANIZATION "X" 
    CONTACT-INFO "X" 
    DESCRIPTION "X" 
    REVISION  "201501120000Z" 
    DESCRIPTION "X" 
    ::= { enterprises 42 } 

myCompany  OBJECT IDENTIFIER ::= { my-MIB 123 } 
... 

一般來說,要解決這些問題,我會運行smilint,看看原點MIB是好的,libsmi設置工作正常。接下來嘗試運行:

smidump -f python MY-MIB.txt 

,看看有什麼是送到了libsmi2pysnmp smidump調用(也被集結pysnmp-MIB調用)的結果。

當一切正常時,build-pysnmp-mib調用smidump生成Python代碼並將其傳遞給libsmi2pysnmp腳本。後者生成符合pysnmp的代碼(例如MY-MIB.py)。

在我看來,smidump的步驟是最脆弱的:它很容易在IMPORT語句中提到的不可用的MIB上失敗,或者MIB中的語法錯誤/不兼容性。

+0

謝謝你的回覆。根據'ls -l MY-MIB.py',MY-MIB.py的大小是1834。 我試着用它自己測試smidump,得到以下結果: \t'$ smidump -f python ./MY-MIB ' \t'./MY-MIB:29:SMIv2的MIB' \t'smidump失蹤MODULE-IDENTITY子句​​:模塊'./MY-MIB」包含錯誤,希望有缺陷的output' \t'smidump:中止由於嚴重解析錯誤' \t'smidump:使用-k選項強制延續 – houckrj