2

实际上,我正在尝试通过给定 sysSwYear 作为 MIBNODE 生成 .h 和 .c 文件,并且我正在使用以下命令:

mib2c -c mib2c.scalar.conf sysSwYear

但它会产生以下错误:

您一开始没有给 mib2c 一个有效的 OID。IE,我找不到有关 mib 节点“sysSwYear.0”的任何信息。这可能是因为您提供了不正确的节点,或者您尝试从中生成代码的 MIB 未加载。要确保您的 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 文件……但仍然没有成功。该怎么办?

4

2 回答 2

4

您需要完全按照它所说的去做:首先将 MIB 加载到解析器中。从使用开始,snmptranslate以确保您可以加载和解析 MIB:

# export MIBS="+NAME-OF-YOUR-MIB"
# snmptranslate -IR sysSwYear

如果这不起作用,那么您的 MIB 没有被找到或加载,因为它有错误(或两者都有)。如果是这样,请使用该选项运行 snmptranslate,-Dparse它会为您提供太多关于它正在做什么的信息,但如果您阅读全部内容,它会让您知道问题出在哪里。

一旦 snmptranslate 像上面那样工作,那么 mib2c 应该可以正常工作(假设您保留 MIBS 环境变量集)。

[注意:我export假设您使用的是基于 sh 的 shell;如果您使用的是基于 csh 的 shell,请改为使用setenv并且没有符号]=

于 2012-06-21T13:37:41.897 回答
1

如果您在 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
于 2017-09-11T20:36:19.417 回答