【问题标题】:snmpset Object not writable. Why? [closed]snmpset 对象不可写。为什么? [关闭]
【发布时间】:2011-12-18 18:14:21
【问题描述】:

我一直在尝试了解如何创建 MIB:这是我到目前为止所做的:

我创建了一个 MIB,并尝试将值分配给新的 OID => 失败

这里是 MIB:

TEST-MIB DEFINITIONS ::= BEGIN

IMPORTS
MODULE-COMPLIANCE, OBJECT-GROUP    FROM SNMPv2-CONF
OBJECT-TYPE, Integer32,MODULE-IDENTITY FROM SNMPv2-SMI;




test    MODULE-IDENTITY
    LAST-UPDATED "201112190200Z"
    ORGANIZATION "blah"
    CONTACT-INFO
        "please"        
    DESCRIPTION
        "I am stuck"
    REVISION    "201112190200Z"
    DESCRIPTION
        "initial Draft"
    ::= { iso org(3) dod(6) internet(1) private(4) enterprises(1) 39106 }

testResearch               OBJECT IDENTIFIER ::= { test 2 }

testVar OBJECT-TYPE
    SYNTAX Integer32
    MAX-ACCESS  read-write
    STATUS  current
    DESCRIPTION
        "just for testing"
    ::= { testResearch 1}

-- conformance information

testMIBConformance OBJECT IDENTIFIER ::= { test 999 }
testMIBCompliances OBJECT IDENTIFIER ::= { testMIBConformance 1 }
testMIBGroups      OBJECT IDENTIFIER ::= { testMIBConformance 2 }

-- compliance statements

testMIBCompliance MODULE-COMPLIANCE
    STATUS  current
    DESCRIPTION
        "blah."
    MODULE  -- this module
    MANDATORY-GROUPS { testGroup }
    ::= { testMIBCompliances 1 }

-- units of conformance

testGroup OBJECT-GROUP
    OBJECTS   { testVar }
    STATUS    current
    DESCRIPTION
        "The draft"
    ::= { testMIBGroups 1 }

END

然后

  • 针对 smilint 验证了此 MIB,
  • 放入~/.snmp/mibs/
  • 拥有所有主机的 rwcommunity 字符串,没有 OID 限制
  • 重新启动 snmpd 守护程序(在 Debian 上)

到目前为止,一切都很好。

然后我试着看看守护进程是否知道这个新企业,我知道了:

snmpwalk -v2c -m +ALL  localhost  .1.3.6.1.4.1.39106

输出: TEST-MIB::test= 在此 OID 的此代理上没有可用的此类对象

所以我猜那个 snmpd 告诉我他在这棵树下找不到任何东西,因为还没有设置任何东西。

所以我尝试在 shell 上使用 snmpset 设置这个测试变量:

snmpset  -v2c -m +ALL localhost .1.3.6.1.4.1.39106.2.1 i 111

输出:

Error in packet.
Reason: notWritable (That object does not support modification)
Failed object: TEST-MIB::testVar

我也尝试过: snmpset -v2c -m +ALL localhost .1.3.6.1.4.1.39106.2.1.0 i 111

以root身份,但没有成功

但是当我执行 snmptranslate 时,我可以看到 MIB 被正确解析:

    snmptranslate -Td  1.3.6.1.4.1.39106.2.1 
    TEST-MIB::testVar
   testVar OBJECT-TYPE
      -- FROM   TEST-MIB
      SYNTAX    Integer32
      MAX-ACCESS    read-write
      STATUS    current
      DESCRIPTION   "just for testing"
    ::= { iso(1) org(3) dod(6) internet(1) private(4) enterprises(1) test(39106) testResearch(2) 1 }

这是一个错误吗?已知问题?

【问题讨论】:

  • 花了一个小时阅读所有关于堆栈溢出的相关帖子(13 页,yehaoo),我意识到我可能必须使用 mib2c 将我的 mib 转换为 c 代码,然后重新编译 netsmtpd有了这个库。我需要编写任何 C 代码来做到这一点吗?我不是 C 菜鸟,我对 C 的一切一无所知.... :(

标签: snmp net-snmp snmpd


【解决方案1】:

听起来您正在尝试构建自己的 SNMP 代理。

从外观上看,您已经正确地创建了自己的 MIB OID,但是当您查询 SNMP 主机时,没有任何东西响应新的 OID。

阅读以下内容:http://docs.oracle.com/cd/E13192_01/manager/mgr20/pguide/buildag.htm 看看它是否解决了您的问题 q:)

【讨论】:

  • 如果我理解得很好,NET-SNMP 不允许即时更新 MIB 树。我必须编写一些 C 代码才能写入新的 OID。
  • 我相信 CPAN 上有一大堆 Perl 模块可以帮助您在用 C 编写代码时遇到问题!试试search.cpan.org/~aelse/SNMP-Agent-0.05/lib/SNMP/Agent.pm
猜你喜欢
  • 2013-04-25
  • 1970-01-01
  • 1970-01-01
  • 2016-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-05
  • 2021-01-19
相关资源
最近更新 更多