使用 SharpSnmp 时,当 V1 中的响应具有尾随数据字节时,SNMP GET snmpexception

问题描述

查询位于远程网络中的某个供应商设备时,会抛出 SharpSnmpLib SNMP V1 GET snmpexception。其他软件如 iReasoning MIB browser、SNMPB 或 SnmpSharpnet 在相同的 OID 和设备上运行正常。

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

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

MessageFactory.cs ParseMessage error

wireshark 数据包也如下所示:

Wireshark capture of SNMP GET where BER end of file occurs

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

Another error with same equipment and same OID

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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)