use*_*678 5 network-programming net-snmp
我按照net-snmp网站上的说明将我自己的MIB支持添加到主代理.
这是我做的:
我完成了教程所说的内容,并且我可以运行snmpget
并snmpset
在NET-SNMP-TUTORIAL-MIB::nstAgentModuleObject
示例上.
请帮我理解我错过的.
"此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
Run Code Online (Sandbox Code Playgroud)
要么:
snmpwalk -v2c -c public MY-MIB-FILE::myVariable
Run Code Online (Sandbox Code Playgroud)
后者将为您提供该OID下所有MIB叶的列表,其中(在您的情况下)将包括该.0
节点.
如果失败,则值得确保您的代码正在编译并正在正确执行.首先,检查./configure
步骤结尾处的详细信息,以确保摘要包含您的mib.例如.(来自./configure --with-mib-modules ="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
---------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
对于前者,可以运行nm
在snmpd的可执行 agent/.libs/libnetsnmpmibs.so
文件,并确保该init_X()
对应于您的MIB功能是存在的.同样值得确保该init_nstAgentModuleObject()
功能存在.如果您make install
在测试之前运行,则值得确保(使用ldd
)正在使用的libnetsnmpmibs.so库是您刚刚构建的库,并且您没有路径问题.
您可以通过DEBUGMSGTL()
在init_X()
函数中添加调用来使用内置调试消息传递系统.要查看调试消息-DALL
,请在snmpd命令行中添加一个选项.