【问题标题】:pysnmp not loading MIBpysnmp 未加载 MIB
【发布时间】:2016-03-17 21:20:49
【问题描述】:

我有两个 MIBS 文件,MIB1 和 MIB2,MIB2 正在从 MIB1 导入元素。我已经运行了 smilint 和 build-pysnmp-mib,实际上是 smidump,因为我无法使用 build-pysnmp-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。

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

【问题讨论】:

    标签: snmp pysnmp


    【解决方案1】:

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

    从 pysnmp 4.3 开始,不需要显式的 ASN.1 MIB 编译步骤——pysnmp 4.3+ 将自动调用 pysmi 来查找/下载/编译 ASN.1 MIB 并将其交给 pysnmp。

    尽可能升级到最新的 pysnmp 总是更好。

    【讨论】:

    • 有什么方法可以让 mibdump.py 在 python 2.7 上运行?谢谢
    • mibdump.py 适用于 Python 2.7。为什么你认为它没有?
    • 我设法让它运行了,但还是同样的错误,我应该在哪里复制新的 .py 文件?
    • 您可以将 MIB .py 文件放在任何位置,然后通过在脚本中调用 .DirMibSource() 来配置 pysnmp 以使用它。
    • 你能成功运行它吗?我遇到了同样的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多