【问题标题】:Snmpget returns noSuchName but snmpwalk works, not a instance number issueSnmpget 返回 noSuchName 但 snmpwalk 有效,不是实例编号问题
【发布时间】:2013-09-03 14:36:57
【问题描述】:

我最近在我的一台服务器上连接了一个 APC 备用电池,我在服务器上安装了 powerchute 代理并验证我可以通过代理远程访问代理和 APC。

我正在尝试让我的 Cacti 安装来检索我的 APC 数据,并且一切正常,除了它返回“来自 SNMP 的结果无效。部分结果:U”,我怀疑这是我的 SNMP 问题有。如何修复它以使 MIB 与实例编号一起使用?

从命令行我可以成功获取其他 OID。

----WORKS----
$ snmpget -v1 -cpublic 192.168.1.2 .1.3.6.1.2.1.1.3.0
iso.3.6.1.2.1.1.3.0 = Timeticks: (140629508) 16 days, 6:38:15.08

只要不添加最终实例编号,我就可以从命令行对 powerchute MIB 进行 snmpwalk。添加实例编号不会返回任何内容。

----WORKS----
$ snmpwalk -v1 -cpublic 192.168.1.2 .1.3.6.1.4.1.318.1.1.1.2.2.3
iso.3.6.1.4.1.318.1.1.1.2.2.3.0 = Timeticks: (72000) 0:12:00.00

----FAILS----
$ snmpwalk -v1 -cpublic 192.168.1.2 .1.3.6.1.4.1.318.1.1.1.2.2.3.0
$

但是,无论有没有实例号,我都无法获取任何 powerchute OID。

----FAILS----
$ snmpget -v1 -cpublic 192.168.1.2 .1.3.6.1.4.1.318.1.1.1.2.2.3.0
Error in packet
Reason: (noSuchName) There is no such variable name in this MIB.
Failed object: iso.3.6.1.4.1.318.1.1.1.2.2.3.0

----FAILS----
$ snmpget -v1 -cpublic 192.168.1.2 .1.3.6.1.4.1.318.1.1.1.2.2.3
Error in packet
Reason: (noSuchName) There is no such variable name in this MIB.
Failed object: iso.3.6.1.4.1.318.1.1.1.2.2.3

【问题讨论】:

  • snmpwalk 可以用getnexts 来实现。并且 getnext 没有 get 提供的值,它获取 next 值。所以snmpwalk instance 本身不会获取 instance 是有道理的。

标签: snmp apc cacti


【解决方案1】:

snmpwalk 返回一个 OID,因此您无法 snmpget,这表明您正在访问的设备的 SNMP 代理存在错误。

令人沮丧的是,这种情况并不少见,即使在企业设备中也是如此。我在 Cisco 和 Nortel 电信设备中遇到了 SNMP 代理错误,成本高达数十万美元。

您确实有解决方法。考虑将 BASH 脚本写入snmpwalk 所需的值并抓取结果。并告诉 Cacti 使用您的自定义脚本,而不是直接通过 SNMP 访问。

【讨论】:

  • 我曾考虑过该选项,但考虑到许多其他仙人掌用户声称已成功实施此选项,因此希望避免它。有人已经编好了这样的剧本吗?我会搜索仙人掌论坛,如果我找不到任何东西,然后扣上并写一个。
  • 我刚开始编写自己的 shell 脚本,我发现在让服务器坐了几个星期之后,SNMP 获取现在可以正常工作了。他们在那段时间经历了重新启动,这可能是启动他们所有工作的触发器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-10
  • 2021-08-26
  • 2019-11-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多