实际上我正试图生成.h& .c文件由给定的sysSwYear作为MIBNODE而我使用以下命令:
mib2c -c mib2c.scalar.conf sysSwYear
但它会产生以下错误:
你没有给mib2c一个有效的OID开始。 IE,我找不到 有关mib节点" sysSwYear.0"的任何信息。这可能是造成的 因为您提供的节点不正确,或者您提供的是MIB 试图从isn&t; tt加载生成代码。确保您的mib是 加载,以此为例运行mib2c:
env MIBS="+MY-PERSONAL-MIB" mib2c -c mib2c.scalar.conf sysSwYear.0
您可能希望从阅读MIB加载教程开始:
http://www.net-snmp.org/tutorial-5/commands/mib-options.html
确保您可以通过snmptranslate显示有关的信息 你的MIB节点。一旦snmptranslate工作,然后回来尝试mib2c 试。
我已经完成了所有需要,例如为MIB设置环境变量和在/ usr / share / snmp / mibs中定义私有MIB文件......但仍然没有成功。怎么办?
答案 0 :(得分:3)
您需要完全按照其说法执行操作:首先将MIB加载到解析器中。首先使用snmptranslate
确保您可以加载和解析MIB:
# export MIBS="+NAME-OF-YOUR-MIB"
# snmptranslate -IR sysSwYear
如果这不起作用,那么您的MIB没有被找到或加载,因为它有错误(或两者都有)。如果是这样,请使用-Dparse
选项运行snmptranslate,它会为您提供有关其正在执行的操作的过多信息,但如果您全部阅读,它会让您知道问题所在。
一旦snmptranslate按上述方式工作,那么mib2c应该可以正常工作(假设您保留MIBS环境变量集)。
[注意:假设您使用的是基于sh的shell,我使用了export
;如果您使用的是基于csh的shell,则使用setenv
而不使用=
符号]
答案 1 :(得分:0)
如果您使用的是Linux,则/ var / lib / net-snmp / mib_indexes的默认权限为0700,会导致普通用户感兴趣。
解决此问题的方法是
linux ~ $ mkdir -p ~/.snmp/persist
linux ~ $ echo "persistentDir ~/.snmp/persist" >> ~/.snmp/snmp.conf
如果命令适用于超级用户但不适用于普通用户,请尝试此操作。请注意,接受的答案是正确的,但没有解决使用这些命令作为普通用户,如#'#'所示。
我发现命令更直观,如下所示:
mib2c -c mib2c.scalar.conf MY-PERSONAL-MIB::sysSwYear.0
mib必须位于以下命令输出中列出的目录之一:
linux ~ $ net-snmp-config --default-mibdirs