当查询位于远程网络中的某个供应商设备时,会引发SharpSnmpLib SNMP V1 GET snmpexception。其他软件如iReasoning MIB浏览器、SNMPB或SnmpSharpNet在相同的OID和设备上工作正常。
即使设备相同,OID相同,但位于不同的网络中,误差也是不同的。似乎在UDP数据包的末尾添加了一个数据段。一种设备--错误消息可能是:"BER end of file",而在另一台相同的设备上,错误消息是“不支持的数据类型:34”,或者“不支持的数据类型:115”等等。在相同的OID上发现了许多不同的数据类型,但是来自不同的设备。
错误发生在ParseMessage例程中的项目源文件“ParseMessage”中。如果我捕捉到错误并继续运行,程序工作正常。我忽略未正确解析的数据字节的尾部部分的错误。

wireshark数据包也如下所示:

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

似乎尾随数据部分会导致API抛出一个错误,因为它不承认它是有效变量。然而,其他软件包处理这一问题时,似乎没有出现错误信息。除非找到更好的解决方案,否则我将不得不修改Sharp的源代码以使用API。我的修改包括捕捉错误并继续前进。循环中的第一个变量已经找到,并生成适当的值。当继续从第一个变量继续时会发生错误,因为流尚未到达终点。
发布于 2022-05-05 20:05:16
使用具有此功能的表单(消息、开始、长度、注册表),因为它只从开始读取到长度,而不是尾随问题。
https://stackoverflow.com/questions/66864085
复制相似问题