Snmp 如何使用mib2c命令?

Snmp 如何使用mib2c命令?,snmp,net-snmp,mib,Snmp,Net Snmp,Mib,实际上,我正试图通过给定sysSwYear作为MIBNODE生成.h和.c文件,并使用以下命令: mib2c -c mib2c.scalar.conf sysSwYear linux ~ $ net-snmp-config --default-mibdirs 但它会产生以下错误: 你没有给mib2c一个有效的OID。我找不到 有关mib节点“sysSwYear.0”的任何信息。这可能是由于 因为您提供的节点不正确,或者是由您正在使用的MIB提供的 未加载尝试从生成代码。确保你的mib是 已加

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

mib2c -c mib2c.scalar.conf sysSwYear
linux ~ $ net-snmp-config --default-mibdirs
但它会产生以下错误:

你没有给mib2c一个有效的OID。我找不到 有关mib节点“sysSwYear.0”的任何信息。这可能是由于 因为您提供的节点不正确,或者是由您正在使用的MIB提供的 未加载尝试从生成代码。确保你的mib是 已加载,以此为例运行mib2c:

   env MIBS="+MY-PERSONAL-MIB" mib2c -c mib2c.scalar.conf sysSwYear.0
您可能希望从以下位置阅读MIB加载教程开始:

并确保您可以让snmptranslate显示有关的信息 您的MIB节点。一旦snmptranslate起作用,就回来试试mib2c 再说一遍


我已经做了所有需要的事情,比如为MIB设置环境变量,在/usr/share/snmp/mibs中定义一个私有MIB文件……但仍然没有成功。要做什么?

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

# export MIBS="+NAME-OF-YOUR-MIB"
# snmptranslate -IR sysSwYear
如果这不起作用,那么就无法找到或加载MIB,因为它有错误(或两者都有)。如果是这样的话,请使用
-Dparse
选项运行snmptranslate,它会为您提供太多关于它正在执行的操作的信息,但如果您阅读了所有内容,它会让您知道问题所在

一旦snmptranslate按上述方式工作,那么mib2c应该可以正常工作(假设您保留MIBS环境变量集)


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

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

# export MIBS="+NAME-OF-YOUR-MIB"
# snmptranslate -IR sysSwYear
如果这不起作用,那么就无法找到或加载MIB,因为它有错误(或两者都有)。如果是这样的话,请使用
-Dparse
选项运行snmptranslate,它会为您提供太多关于它正在执行的操作的信息,但如果您阅读了所有内容,它会让您知道问题所在

一旦snmptranslate按上述方式工作,那么mib2c应该可以正常工作(假设您保留MIBS环境变量集)


[注意:我使用了
export
假设您使用的是基于sh的shell;如果您使用的是基于csh的shell,则改用
setenv
并且不使用
=
签名]

如果您在Linux上,则/var/lib/net snmp/mib_索引的默认权限为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必须位于以下命令输出中列出的目录之一:

mib2c -c mib2c.scalar.conf sysSwYear
linux ~ $ net-snmp-config --default-mibdirs

如果您在Linux上,/var/lib/net snmp/mib_索引的默认权限为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必须位于以下命令输出中列出的目录之一:

mib2c -c mib2c.scalar.conf sysSwYear
linux ~ $ net-snmp-config --default-mibdirs

嗨,韦斯,在认真考虑了你的建议并做了所有描述的事情之后,我无法得到它,然后我运行了snmptranslate with-Dparse选项->snmptranslate-Dparse-ZYXEL-ES2108G-MIB::sysSwYear,结果显示了它——找不到模块(ZYXEL-ES2108G-MIB):在中的第0行(无)解析MIB:模块ZYXEL-ES2108G-MIB未找到ZYXEL-ES2108G-MIB::sysSwYear:未知的对象标识符,即使我已经设置了Env变量路径,并且我的MIB文件位于/usr/share/snmp/mibs目录中……我还应该做什么?尝试将
MIBDIRS
环境变量设置为“/usr/share/snmp/mibs”如果你是这么说的。嗨,韦斯,我正在努力找出为什么主机名一直出现在SNMP陷阱v2中……请你帮我纠正这个问题……我将非常感谢你……请帮我解决。下面是陷阱示例——UDP:[192.168.1.150]:1028->[192.168.1.23].iso.org.dod.internet.mgmt.mib-2.system.sysUpTime.sysUpTimeInstance 0:0:01:07.00.iso.org.dod.internet.snmpV2.snmpModules.snmpMIB.snmpMIB.snmpTrap.snmpTrapOID.0.iso.org.dod.internet.snmpV2.snmpModules.snmpMIB.snmpTraps.linkDownGaurav:你可能应该把它作为一个新问题发布。但我不太清楚,这就是为什么您需要提供完整的详细信息(包括网络snmp版本号)。嗨,韦斯,感谢您的反馈,我知道了…在/etc/hosts文件中简单描述了相应的Ip及其对应的主机名。实际上,这是为了满足客户的要求,但是我没有问网络snmp版本号。我已经把它作为一个新问题发布了,但是没有从任何人那里找到正确的答案。这就是为什么在最后,我问了你关于它的问题。如果你对我感到不好,很抱歉,在考虑了你的建议并做了所有描述的事情之后,我无法获取它,然后我以->snmptranslate-Dparse-ZYXEL-ES2108G-MIB::sysSwYear的方式运行了snmptranslate和-Dparse选项,其结果显示为:找不到模块(ZYXEL-ES2108G-MIB):在第0行(无)解析MIB:模块ZYXEL-ES2108G-MIB未找到ZYXEL-ES2108G-MIB::sysSwYear:未知的对象标识符,即使我已经设置了Env变量路径并且我的MIB文件位于/usr/share/snmp/mibs目录中……我还应该做什么?尝试设置
MIBDIRS