添加新的mib主代理

use*_*678 5 network-programming net-snmp

我按照net-snmp网站上的说明将我自己的MIB支持添加到主代理.

这是我做的:

  1. 我在net-snmp/agent/mibgroup /文件夹中创建了我的支持.c和.h文件.
  2. 我将我的MIB文件复制到/ usr/local/share/snmp/mibs /文件夹.
  3. 我跑了"./configure --with-mib-modules ="myMib""
  4. 我跑"make"和"make install"
  5. 我用"snmpd -f -Le -d -c snmpd.conf&"开始snmpd
  6. 我可以通过运行snmpdtranslte命令来查看我的MIB结构.但是,当我尝试使用snmpget -v2c -c public"MY-MIB-FILE :: myVariable"时,我不断收到"***=此OID上此代理上没有此类对象".

我完成了教程所说的内容,并且我可以运行snmpgetsnmpsetNET-SNMP-TUTORIAL-MIB::nstAgentModuleObject示例上.

请帮我理解我错过的.

And*_*mbe 7

"此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)

对于前者,可以运行nmsnmpd的可执行 agent/.libs/libnetsnmpmibs.so文件,并确保该init_X()对应于您的MIB功能是存在的.同样值得确保该init_nstAgentModuleObject()功能存在.如果您make install在测试之前运行,则值得确保(使用ldd)正在使用的libnetsnmpmibs.so库是您刚刚构建的库,并且您没有路径问题.

您可以通过DEBUGMSGTL()init_X()函数中添加调用来使用内置调试消息传递系统.要查看调试消息-DALL,请在snmpd命令行中添加一个选项.


App*_*234 2

No Such Object available on this agent at this OID当代理根本不支持请求的 MIB 对象或未指定索引或实例变量时,会出现该消息。

从您链接到的教程中,您是否为社区字符串 public 添加了相关配置?

例如

通过运行 snmpconf,详细信息请参见此处

另请参阅此处“初学者和调试提示”部分中提到的配置更改。

您似乎也没有为变量指定索引或实例,它应该像

snmpget -v2c -c public MY-MIB-FILE::myVariable.0

您可能还想尝试显式指定主代理运行的主机和端口,以防它不在snmpd.conf.