“关于这个代理在此OID可没有这样的对象”表示,据netsnmpd而言,有在它的树没有相应的OID。
不要被snmptranslate
成功感到困惑。 Snmptranslate只能在MIB文件本身上运行,根本不需要访问snmp服务器。因此,snmptranslate正确显示您的MIB详细信息仅表明您的mib已正确复制到$MIBDIRS
或您的.snmp/snmp.conf
文件(等)中列出的目录。
假设您正在学习本教程,您已经实现的mib提供了一个标量变量。标量变量被赋予一个.0
的索引(即后缀)。尝试运行以下命令之一:
snmpget -v2c -c public MY-MIB-FILE::myVariable.0
或者:
snmpwalk -v2c -c public MY-MIB-FILE::myVariable
后者会给你所有的MIB的列表离开该OID,其下(在你的情况下),将包括.0
节点。
如果失败,值得确保您的代码正在编译并正在正确执行。 首先,请检查./configure
步骤结尾处的详细信息,以确保摘要中包含您的mib。例如。 (来自的./configure --with-MIB模块= “nstAgentModuleObject” 结果):
---------------------------------------------------------
Net-SNMP configuration summary:
---------------------------------------------------------
SNMP Versions Supported: 1 2c 3
Net-SNMP Version: 5.4.1
Building for: linux
snip
Agent MIB code: nstAgentModuleObject default_modules => snmpv3mibs mibII ucd_snmp notification notification-log-mib target agent_mibs agentx disman/event disman/schedule utilities host
snip
---------------------------------------------------------
对于前者,你可以运行nm
在
SNMPD可执行
agent/.libs/libnetsnmpmibs.so
文件,并确保该init_X()
功能对应于你的MIB存在。还值得确保init_nstAgentModuleObject()
函数存在。如果在测试之前运行make install
,值得确保(使用ldd
)正在使用的libnetsnmpmibs.so库是您刚刚构建的库,并且您没有路径问题。
您可以通过添加init_X()
函数中调用DEBUGMSGTL()
使用内置调试邮件系统。要查看调试消息,请在您的snmpd命令行中添加-DALL
选项。
你有没有尝试过在你的代理添加一些痕迹?这是我从哪里开始。在代理加载和处理程序的每一步中放入'fprintf's'来查看停止响应的位置。没有它,我们可能有可能的可能性... – j4x 2012-04-03 17:05:06
是的,我试过痕迹。一切看起来不错,没有错误。我可以看到命令被发送出去,“NO such such object”响应返回,这是错误代码8. – user195678 2012-04-05 23:57:46
也许这是相关的,我将我的MIB文件附加到netSnmpExamples下,因为我没有公司的OID。所以在我的MIB文件中,我有这个部分:xxxsnmp MODULE-IDENTITY LAST-UPDATED“201112220000Z” ORGANIZATION“www.xxx.com” CONTACT-INFO “email:xxx @ xyz。COM” 描述 ‘测试我的MIB’ 修订‘201112200000Z’ 描述 ‘第一稿’ :: = {netSnmpExamples 5} – user195678 2012-04-06 00:10:36