如何使用mib2c命令?

时间:2012-06-21 04:54:38

标签: snmp net-snmp mib

实际上我正试图生成.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文件......但仍然没有成功。怎么办?

2 个答案:

答案 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