【问题标题】:Error (noSuchName) from netsnmp api, but snmpget works just fine来自 netsnmp api 的错误 (noSuchName),但 snmpget 工作正常
【发布时间】:2020-04-29 20:28:16
【问题描述】:

我有一个程序正在使用 netsnmp C API 来查询设备以获取 snmp 信息。到目前为止一切正常,但是当我轮询一个新的 OID (1.3.6.1.2.1.138.1.1.1.3.0 (isisSysID)) 时,它不起作用,我只收到 noSuchName 错误,其他 OID,例如来自IF-MIB 工作正常。

但是,当我使用 snmpget 从同一系统到同一端点进行测试时,它工作正常。 (v1 或 v2c) snmpget -v2c -c 1.3.6.1.2.1.138.1.1.1.3.0

谢谢。

【问题讨论】:

  • 使用 Wireshark 之类的工具来分析发送到网络的实际 SNMP 数据包,您应该可以轻松观察差异以帮助您入门。
  • 啊,这是有道理的,出于某种原因,我刚刚假设我的代码甚至没有发送任何内容。谢谢。
  • 所以找到了问题的一部分,它发送的 OID 被清零的请求完全被窃听了。

标签: snmp net-snmp


【解决方案1】:

解决了问题, 在我的代码中,我使用 get_node 方法将 OID 字符串转换为用于 netsnmp api 请求的 OID 对象。如果您使用的 OID 包含名为“sysName.0”的文本部分,则此方法可以正常工作,但如果您使用的 OID 完全是数字,即“1.3.6.1.2.1.138.1.1.1.3.0”,则会失败。

幸运的是,您可以将该 OID 缩短为“mib-2.138.1.1.1.3.0”,因为“mib-2”是“1.3.6.1.2.1”的文本替换

【讨论】:

  • 是的,get_node 是 MIB 实用程序功能的一部分,并非旨在完成您的用途。你不想read_objid吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-15
  • 1970-01-01
  • 2012-04-07
  • 1970-01-01
  • 2014-05-26
相关资源
最近更新 更多