1

我正在尝试构建一个客户端以使用 snmp4j 从启用了 snmp 的设备获取值。使用 OID 和索引号,我可以获取设备的名称和序列号。但我听说索引号不是恒定的,它一直在变化。您可能会在 SNMP OID 中找到所需的索引号(例如,网络接口的索引号),有时我们可能并不完全依赖索引号始终保持不变。

索引号可能是动态的 - 它们可能会随着时间而变化,因此您的项目可能会停止工作。

所以我需要找到一种方法来动态获取索引号。或者有什么方法可以让我在不硬编码序列号的情况下获得序列号。

一个 OID 可能有 150 个索引号,每个索引号都有不同的值。我需要从该表中获取特定信息。

4

1 回答 1

0

(不幸的是)指数变化并不罕见。例如,某些设备会在重新启动时重新排序某些表。

您可能已经意识到,如果索引值是可变的,您将无法在一个请求中获取数据。但是你可以通过“走”桌子来做到这一点。

使用 GetNextRequest,您可以从列标题开始,然后继续遍历表,获取所有数据或仅获取单个列。有关更详细的示例,请参阅 RFC 1905 的第 4.2.2.1 节: https ://www.rfc-editor.org/rfc/rfc1905

假设表中有一些列可以识别正确的卡,您可以:

  1. 仅遍历标识列,并从值中找到所需卡的索引,然后发出单个 GetRequest 以获得该卡的序列号

  2. (更有效)通过在第一个请求中请求这两个列标题等来遍历两个列(标识符和序列号)。在结果数据集中,找到您卡片的数据。

于 2014-04-03T07:38:29.703 回答