0

查询位于远程网络中的特定供应商设备时,会引发 SharpSnmpLib SNMP V1 GET snmpexception。iReasoning MIB Browser、SNMPB 或 SnmpSharpNet 等其他软件在相同的 OID 和设备上运行良好。

即使设备相同且 OID 相同但位于不同的网络中,错误也会有所不同。似乎在 UDP 数据包的末尾添加了一个数据段。一台设备的错误消息可能是:“ BER end of file ”,而在另一台相同的设备上,错误消息是“不支持的数据类型:34 ”或“不支持的数据类型:115 ”等等。在同一个 OID 但来自不同设备的许多不同数据类型。

ParseMessage 例程中的项目源文件“MessageFactory.cs”中出现错误。如果我发现错误并继续程序运行正常。我忽略了未正确解析的数据字节尾随部分的错误。

MessageFactory.cs ParseMessage 错误

Wireshark 数据包也如下所示:

发生 BER 文件结尾的 SNMP GET 的 Wireshark 捕获

这是另一块完全相同的 SNMP 设备和 OID 上的另一个错误,只是 IP 地址不同。

相同设备和相同 OID 的另一个错误

似乎尾随数据部分会导致 API 抛出错误,因为它不将其识别为有效变量。然而,其他软件包可以处理此问题而不会出现错误消息。除非找到更好的解决方案,否则我将不得不修改 Sharp SNMP 的源代码以使用 API。我的修改涉及捕获错误并继续前进。循环中的第一个变量已经找到并产生正确的值。从第一个变量继续时会发生错误,因为流尚未到达末尾。

4

0 回答 0