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

编译自定义MIB用于pysnmp程序遇问题:本地MIB被忽略求助

解决mibdump.py忽略本地自定义MIB、远程下载错误文件的问题

看起来你遇到的核心问题是mibdump.py优先从远程仓库获取了同名的"NAS" MIB(但实际是错误的HTML文件),完全跳过了你的本地自定义MIB。这是因为工具默认行为是:当找不到本地匹配的MIB时,会尝试从远程仓库借用,但如果远程有同名条目(哪怕是无效的),就会直接下载使用。

你的原命令存在两个关键问题

  1. 最后一个参数传入的是本地目录/文件路径,但mibdump.py期望的是MIB模块名(也就是你自定义MIB里XXX DEFINITIONS ::= BEGIN中的XXX,比如你的MIB写的是NAS DEFINITIONS ::= BEGIN,模块名就是NAS)。
  2. 没有明确指定本地MIB的搜索路径,也没有禁用远程借用行为,导致工具直接去远程拉取了错误文件。

正确的编译步骤和命令

1. 先确认本地MIB的基础正确性

  • 确保自定义MIB的文件名和模块名一致:比如模块名是NAS,文件名应为NAS.mib或NAS.txt,放在C:/Users/me/Desktop目录下。
  • 用smidump工具检查MIB语法(避免因语法错误导致工具跳过本地MIB):
    smidump -k C:/Users/me/Desktop/NAS.mib
    
    如果输出语法错误,先修复MIB的语法问题。

2. 强制使用本地MIB的编译命令

使用--mib-source指定本地MIB所在目录,同时用--no-borrow禁用远程借用功能,确保工具只使用你本地的MIB:

mibdump.py --mib-source=C:/Users/me/Desktop --no-borrow --destination-directory=C:/Users/me/Desktop --destination-format=pysnmp NAS
  • --mib-source:告诉工具优先从这个目录搜索MIB文件
  • --no-borrow:禁止工具从远程仓库获取缺失的MIB
  • 最后一个参数NAS是你的MIB模块名,必须和MIB定义中的名称完全一致

3. 排查问题的额外手段

如果还是不行,加上--debug参数查看详细日志,能清晰看到工具如何搜索和处理MIB:

mibdump.py --debug --mib-source=C:/Users/me/Desktop --no-borrow --destination-directory=C:/Users/me/Desktop --destination-format=pysnmp NAS

通过日志可以确认工具是否找到了你的本地MIB文件,以及是否有其他错误导致编译失败。

验证编译结果

编译成功后,生成的NAS.py应该是包含pysnmp MIB定义的Python文件,而非HTML代码。之后你就可以在pysnmp函数中正常使用这个MIB了,只需确保addAsn1MibSource指向你编译后的MIB目录即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:47:04