添加新的mib主代理

时间:2012-03-27 22:43:21

标签: network-programming net-snmp

我正在关注instructions on the net-snmp website以向主代理添加我自己的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上的代理人“。
  7. 我完全按照教程所说,我可以在snmpget示例上运行snmpsetNET-SNMP-TUTORIAL-MIB::nstAgentModuleObject

    请帮助我理解我在这里错过的内容。

5 个答案:

答案 0 :(得分: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

或者:


snmpwalk -v2c -c public MY-MIB-FILE::myVariable

后者将为您提供该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
---------------------------------------------------------

对于前者,您可以在 snmpd可执行文件 nm文件上运行agent/.libs/libnetsnmpmibs.so,并确保存在与您的MIB对应的init_X()函数。同样值得确保init_nstAgentModuleObject()函数存在。如果您在测试之前运行make install,则值得确保(使用ldd)正在使用的libnetsnmpmibs.so库是您刚刚构建的库,而您不是有路径问题。

您可以在DEBUGMSGTL()功能中添加init_X()次呼叫,以使用内置的调试消息系统。要查看调试消息,请在snmpd命令行中添加-DALL选项。

答案 1 :(得分:2)

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

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

E.g

按详细here运行snmpconf。

另请参阅初学者和调试技巧部分here中提到的配置更改。

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

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

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

答案 2 :(得分:2)

尝试从构建目录启动代理。 NET-SNMP-X.X.X /剂。

./snmpd -f -L -d -c /usr/local/etc/snmpd.conf

并停止所有其他SNMP代理。

在我的情况下如果我跑

snmpd -f -Le -d -c snmpd.conf &

此命令启动预先安装的snmp守护程序。

答案 3 :(得分:1)

ldd值得一试,在我的情况下,snmpd与标准的Ubuntu libnetsnmpmibs.so动态链接,但我没有获得自定义的MIB支持,但也遵循相同的教程。

修复动态链接的东西,一切顺利!

答案 4 :(得分:-1)

snmpd.conf

  view  systemonly  included  .1.3.6.1.4.1.8072.2.4.1.1.1