You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySNMP编译LLDP-MIB报错:MibNotFoundError问题求助

问题:pysnmp解析LLDP-MIB时依赖缺失报错

我使用pysnmp从lldpRemTable获取数据,已成功拿到目标数值,但需要借助MIB解析各数值的具体含义(比如确认Ethernet1/1对应的lldpRemPortId)。最初遇到pysnmp.smi.error.MibNotFoundError(找不到LLDP-MIB),将文件路径改为绝对路径后,又出现找不到SNMPv2-TC的错误。

奇怪的是,用类似代码操作cdpCacheTable时完全正常,甚至无需修改路径。我原本以为CISCO-CDP-MIB是随pysnmp预编译好的,但发现如果不手动编译(注释代码第1、3行),对象标签会显示异常。

可正常运行的cdpCacheTable代码

mib_file = os.path.dirname(os.path.abspath(__file__)) + '/mibs'
mib_builder = builder.MibBuilder()
compiler.addMibCompiler(mib_builder, sources=[mib_file])
mib_builder.loadModules('CISCO-CDP-MIB')
mib_view = view.MibViewController(mib_builder)

存在问题的lldpRemTable代码

mib_file = os.path.dirname(os.path.abspath(__file__)) + '/mibs'
mib_builder = builder.MibBuilder()
compiler.addMibCompiler(mib_builder, sources=[mib_file])
mib_builder.loadModules('LLDP-MIB')
mib_view = view.MibViewController(mib_builder)

注:CISCO-CDP-MIB和LLDP-MIB文件均存储在上述代码指定的./mibs目录中。

尝试过的解决方法

  1. 补充默认MIB路径:查到指定sources后,pysnmp不会再读取默认路径,于是修改代码将默认MIB目录加入sources列表:
mib_file = os.path.dirname(os.path.abspath(__file__)) + '/mibs'
mib_builder = builder.MibBuilder()
compiler.addMibCompiler(mib_builder, sources=[mib_file, os.path.expanduser('~') + '/.local/lib/python3.8/site-packages/pysnmp/smi/mibs'], destination=os.path.expanduser('~') + '/.local/lib/python3.8/site-packages/pysnmp/smi/mibs')
mib_builder.loadModules('LLDP-MIB')
mib_view = view.MibViewController(mib_builder)

但仍出现MibNotFoundError。

  1. 启用调试:通过debug.setLogger(debug.Debug('all'))调试后,发现程序仍无法找到所需的依赖MIB。

  2. 手动下载依赖:尝试下载所需的依赖MIB文件到/mibs目录,但问题依旧,推测是依赖链过长,需要大量MIB文件才能解决。

疑问

开发者提到“编译MIB需要具备所有它导入的MIB(以及这些MIB导入的其他MIB,依此类推),即必须拥有依赖链中所有未编译的MIB”。难道必须把所有依赖MIB都放到/mibs目录中吗?这显然不是理想方案,希望找到像操作cdpCacheTable那样简便的解决方案。

内容的提问来源于stack exchange,提问作者dryhen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 21:24:57