2014-02-25 287 views
1

當我使用:pysnmp轉換的.mib爲.py文件

build-pysnmp-mib -o iSCSI_RAID_Rack-1.2.1.py iSCSI_RAID_Rack-1.2.1.mib 

要一個的.mib文件轉換爲它不出差錯轉換成爲一個.py文件。當我嘗試加載在蟒蛇的文件我得到以下錯誤:

錯誤:

「NameError:名字 'MibScalar' 沒有定義

完整的錯誤:

文件」 C: \ python27 \ lib \ site-packages \ pysnmp \ smi \ builder.py「,第259行,在loadModules 'MIB module \」%s \「加載錯誤:%s'%(modPath,traceback.format_exception(* sys。加載錯誤:['Traceback(最近一次調用最後一次):\ n','File'C:\ n',' \ Python27 (modData,g)\ n','文件「C:\ Python27 \ snmp \ MIB \ iSCSI_RAID_Rack-1.2.1中的第\ 255行\ lib \ site-packages \ pysnmp \ smi \ builder.py ((1,3,6,1,4,1,22274,1,1,1,2),DisplayString())。setMaxAccess(「readonly」)。 setLabel( 「SYS-狀態-TEMP」)\ n」, 「NameError:名字 'MibScalar' 沒有定義\ n」]

CODE:

def addFile(dir, file): 
    mibBuilder = cmdGen.snmpEngine.msgAndPduDsp.mibInstrumController.mibBuilder 

    mibSources = mibBuilder.getMibSources() + (
            builder.DirMibSource(dir), 
            ) 

    mibBuilder.setMibSources(*mibSources) 
    mibBuilder.loadModules(file) 

回答

0

你iSCSI_RAID_Rack-1.2.1.py文件可能不完整。這可能是由smidump(稱爲build-pysnmp-mib)失敗引起的。

確保iSCSI_RAID_Rack-1.2.1.mib導入的所有MIB都位於smidump搜索路徑中。

另一個想法是手動運行smidump(以與從build-pysnmp-mib調用的相同的方式)來查看它是否投訴了錯誤的MIB語法。

0

我有同樣的問題,我直接與smidump一起嘗試,我沒有成功。

我在這裏找到的問題和答案有點舊,現在我們有PySMI軟件包。該軟件包通常可用於pip,並且附帶一個名爲mibdump.py的命令行工具。

當我第一次嘗試mibdump.py時,我遇到了腳本中使用的python解釋器版本問題。所以我自己改了一下,在我的系統中指向了一個有效的python解釋器。

之後,我安裝了下載mibs工具(在Ubuntu存儲庫上的snmp-mibs-downloader)。該工具自動下載通常翻譯所需的一些基本MIB。您可以在/ etc/snmp-mibs-downloader(至少在Mint Linux上)配置MIB下載器,在那裏您可以看到MIB下載到的位置。

然後我:

mibdump.py --destination-directory=<target files directory> --mib-source=<place where the source MIBs are> --mib-source=/var/lib/mibs/iana --mib-source=/var/lib/mibs/ietf <name MIB to be translated> 

請注意,我使用了「--mib源」以指向我的自定義MIB位於的地方,也地步基地的MIB分別下載至。