Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pysnmp.smi.error.SmiError:Y>pysnmp.smi.builder.MibBuilder实例中未加载模块X-MIB_Python_Snmp_Pysnmp - Fatal编程技术网

Python pysnmp.smi.error.SmiError:Y>pysnmp.smi.builder.MibBuilder实例中未加载模块X-MIB

Python pysnmp.smi.error.SmiError:Y>pysnmp.smi.builder.MibBuilder实例中未加载模块X-MIB,python,snmp,pysnmp,Python,Snmp,Pysnmp,我正在尝试为我的应用程序在几个特定的OID上执行GET命令。我有一个.txt格式的自定义MIB文件。我通过将文件转换为.py格式 我得到这个错误。我将输出保存为X-MIB.py并继续: smidump: module `mibs/AGILINK-MIB' contains errors, expect flawed output. 我将X-MIB.py文件保存在C:\Python27\Lib\site packages\pysnmp\smi\mibs中。我知道这是一个糟糕的做法,但我只是想测

我正在尝试为我的应用程序在几个特定的OID上执行GET命令。我有一个.txt格式的自定义MIB文件。我通过将文件转换为.py格式

我得到这个错误。我将输出保存为X-MIB.py并继续:

smidump: module `mibs/AGILINK-MIB' contains errors, expect flawed output. 
我将X-MIB.py文件保存在C:\Python27\Lib\site packages\pysnmp\smi\mibs中。我知道这是一个糟糕的做法,但我只是想测试一下它是否有效

以下是我的脚本,以获取一些OID:

from pysnmp.entity.rfc3413.oneliner import cmdgen

cmdGen = cmdgen.CommandGenerator()

errorIndication, errorStatus, errorIndex, varBinds = cmdGen.getCmd(
    cmdgen.CommunityData('public'),
    cmdgen.UdpTransportTarget(('169.254.0.1', 161)),
    cmdgen.MibVariable('X-MIB', 'aglGwDesc', '0'),
    cmdgen.MibVariable('SNMPv2-MIB', 'sysUpTime', '0'),
    lookupNames = True, 
    lookupValues = True
)

# Check for errors and print out results
if errorIndication:
    print(errorIndication)
elif errorStatus:
    print(errorStatus)
else:
        print('%s = %s' % (name.prettyPrint(), val.prettyPrint()))
    for name, val in varBinds:
以下是错误:

Traceback (most recent call last):
  File "getting_started.py", line 11, in <module>
    lookupValues = True
  File "C:\Python27\lib\site-packages\pysnmp\entity\rfc3413\oneliner\cmdgen.py", line 424, in getCmd
    kwargs.get('contextName', null)
  File "C:\Python27\lib\site-packages\pysnmp\entity\rfc3413\oneliner\cmdgen.py", line 277, in getCmd
    self.makeReadVarBinds(varNames),
  File "C:\Python27\lib\site-packages\pysnmp\entity\rfc3413\oneliner\cmdgen.py", line 201, in makeReadVarBinds
    [ (x, self._null) for x in varNames ], oidOnly=True
  File "C:\Python27\lib\site-packages\pysnmp\entity\rfc3413\oneliner\cmdgen.py", line 209, in makeVarBinds
    varName.resolveWithMib(self.mibViewController, oidOnly=True)
  File "C:\Python27\lib\site-packages\pysnmp\entity\rfc3413\oneliner\mibvar.py", line 159, in resolveWithMib
    self.__modName, self.__symName
  File "C:\Python27\lib\site-packages\pysnmp\smi\builder.py", line 302, in importSymbols
    'No module %s loaded at %s' % (modName, self)
pysnmp.smi.error.SmiError: No module X-MIB loaded at <pysnmp.smi.builder.MibBuilder instance at 0x02D6B8F0>
我的问题是如何解决这个错误?是因为之前在制作X-MIB.py文件时出错吗

我知道它能够看到我的X-MIB.py文件,因为错误并不是说在path中找不到X-MIB或类似的东西。我在上阅读了文档,但无法理解。

如前所述,您必须通过libsmi2pysnmp工具将smidump输出转换为与pysnmp兼容的格式

但我建议您首先解决smidump错误/警告,否则您的*.py MIB可能有故障。这些错误似乎与MIB语法有关

通过使用addMibSource方法,您可以将pysnmp指向使用自己的路径的pysnmp兼容MIB目录:

cmdgen.MibVariable('X-MIB', 'aglGwDesc', '0').addMibSource('/tmp/mymibs'),
最后,您实际上不需要MIB来查询SNMP代理—只需向命令生成器传递纯文本OID,而不是MIB变量实例:

errorIndication, errorStatus, errorIndex, varBinds = cmdGen.getCmd(
    cmdgen.CommunityData('public'),
    cmdgen.UdpTransportTarget(('demo.snmplabs.com', 161)),
    '1.3.6.1.2.1.1.1.0',
    '1.3.6.1.2.1.1.6.0'
)