查询位于远程网络中的某个供应商设备时,会引发 SharpSnmpLib SNMP V1 GET snmp 异常。其他软件(如 iReasoning MIB 浏览器、SNMPB 或 SnmpSharpNet)可以在相同的 OID 和设备上正常工作。
即使设备相同、OID 相同但位于不同网络,错误也会有所不同。看起来像是在UDP数据包的末尾添加了一个数据段。一台设备上的错误消息可能是:“BER 文件结尾”,而在另一台相同的设备上,错误消息是“不支持的数据类型:34”或“不支持的数据类型:115” ”等等。在同一 OID 上但来自不同设备的许多不同数据类型。
错误发生在项目源文件“MessageFactory.cs”的ParseMessage例程中。如果我发现错误并继续,程序就可以正常工作。我忽略了未正确解析的数据字节尾随部分的错误。
wireshark数据包也如下所示:
这是另一台完全相同的 SNMP 设备和 OID 上的另一个错误,只是 IP 地址不同。
尾部数据部分似乎会导致 API 抛出错误,因为它无法将其识别为有效变量。然而其他软件包可以处理这个问题,而不会出现错误消息。除非找到更好的解决方案,否则我将不得不修改 Sharp SNMP 的源代码才能使用 API。我的修改包括捕获错误并继续。循环中的第一个变量已经找到并产生正确的值。从第一个变量继续时会发生错误,因为流尚未到达末尾。
使用具有(消息、开始、长度、注册表)的形式 这是有效的,因为它只从头到尾读取,而不是尾随问题