为什么会有不同的STRING格式?

问题描述 投票:0回答:1

[前一段时间,我开发了一个脚本来通过snmpwalkIF-MIB::ifDescr查询网络接口,输出格式类似于STRING: eth0。操作系统是使用net-snmp的SLES11(它仍然可以使用net-snmp-5.7.3在SLES12中工作)。

然而,在其他OS(仍然是Linux)上,接口字符串表示为STRING: "port1"(请注意,双引号引起来)。现在的问题是:谁负责额外的双引号?是不同版本的net-snmp还是不同的SNMP代理?还是在代理中错误地实现了其中一项结果?

据我所知,SNMP协议中双引号不是必需,因为字符串始终以其长度传输。

string snmp
1个回答
0
投票

一般来说是不可能的。

虽然SNMP代理提供一个[[quoted字符串以响应对ifDescr(或其他任何信息!)的查询,这是不寻常的(也是不希望的),因为它们确实不属于合同的一部分。在该级别的字符串中,SNMP世界充满了奇怪,变异和规格偏差,因此您不能认为这将永远不会发生。

同时,Net-SNMP之类的工具的命令行输出格式实际上是任意的:开发人员可以选择是否引用字符串,只要他们记录了选择,最终结果是相同的。因此,您也不能在此处进行任何假设。

您应检查实际数据。您可以通过使用tcpdump之类的工具嗅探SNMP数据包并将其加载到Wireshark(以前是Ethereal)之类的UI中来实现。然后,您可以观察数据报的

actual

内容,而无需使用Net-SNMP格式。如果包含引号,则是代理的错。如果不是,则应用程序正在添加它们以进行显示。作为社论,如果您告诉我们

实际上]是什么“不同的” Linux OS,以及您在其上使用的是哪个版本的Net-SNMP,我们可以确认(或排除)选项两个给你。

© www.soinside.com 2019 - 2024. All rights reserved.