2012-03-27 206 views
5

我正在关注instructions on the net-snmp website以将我自己的MIB支持添加到主代理。添加新的mib主代理

这里是我做过什么:

  1. 我创造了我支持的.c和.h文件中的net-snmp /代理/ mibgroup /文件夹。
  2. 我将我的MIB文件复制到/ usr/local/share/snmp/mibs /文件夹。
  3. 我跑 “的./configure --with-MIB模块= ”myMib“”
  4. 我跑了 “做” 和 “做安装SNMPD -f -Le -d”
  5. 我开始与SNMPD” - c snmpd.conf &“
  6. 我可以通过运行snmpdtranslte命令来查看我的MIB结构。但是,当我尝试使用 snmpget -v2c -c public“MY-MIB-FILE :: myVariable”时,我一直得到“* =在此OID上没有此代理上的此类对象可用 ”。

我确实做到了教程说什么,我可以运行在NET-SNMP-TUTORIAL-MIB::nstAgentModuleObject例如snmpgetsnmpset

请帮我理解我在这里错过了什么。

+0

你有没有尝试过在你的代理添加一些痕迹?这是我从哪里开始。在代理加载和处理程序的每一步中放入'fprintf's'来查看停止响应的位置。没有它,我们可能有可能的可能性... – j4x 2012-04-03 17:05:06

+0

是的,我试过痕迹。一切看起来不错,没有错误。我可以看到命令被发送出去,“NO such such object”响应返回,这是错误代码8. – user195678 2012-04-05 23:57:46

+0

也许这是相关的,我将我的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

回答

2

消息No Such Object available on this agent at this OID发生在代理不支持所请求的MIB对象在所有或当索引或实例变量未specfied。

从您链接到本教程中,你加的相关配置为 团体字符串公众?

E.g

通过运行snmpconf详细的here

也看到在初级和调试技巧部分here提到的配置更改。

也似乎没有拥有它应该像

snmpget -v2c -c public MY-MIB-FILE::myVariable.0索引或实例为您的变量指定。

你可能想也尽量明确指定你的主代理运行在的情况下,它是不是在snmpd.conf的主机和端口。

+0

Appleman,我相信我会在snmpd.conf文件中添加配置更改。当我使用“snmpget”和“snmpset”时,最后确实有“.0”。我会尝试在明确指定主机和端口的建议。 – user195678 2012-04-05 22:17:01

+0

我附加netSnmpExamples下的我的MIB。我使用netSnmpExamples.5作为我的MIB OID。 – user195678 2012-04-06 00:14:43

6

“关于这个代理在此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选项。

+0

Andrew,好像我的init_x()没有被编译到snmpd中。但我确实使用./configure --with-mib-modules =“myMib”。你知道如何确保我的init_x()被编译成snmpd吗? – user195678 2012-04-06 00:04:50

+0

我附加netSnmpExamples下的我的MIB。我使用netSnmpExamples.5作为我的OID。我不知道这是否是问题。 – user195678 2012-04-06 00:14:17

0

ldd值得检查,在我的案例中snmpd与标准Ubuntu libnetsnmpmibs.so动态链接,我没有得到自定义MIB支持,但也遵循相同的教程。

修复动态链接的东西,一切都解决了!

1

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

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

并停止所有其他SNMP代理。

在我而言,如果我跑

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

下命令来启动预先安装的SNMP守护程序。

0

的snmpd.conf

view systemonly included .1.3.6.1.4.1.8072.2.4.1.1.1