阅读:5811回复:6
请教一个snmp++获取交换机MAC地址格式的问题
我用snmp++来获取交换机的SNMP信息,一般的信息获取都没问题,但对于那些MAC地址格式的信息的获取得到的信息总是有些问题,每个MAC地址串后面还跟着一些无用的数据,试了思科、华三的交换机都是这样,但用一些SNMP浏览器获取得到的信息都不会这样,不知道这是snmp++库的问题还是交换机提供的信息本来就是有这些的?哪位用过snmp++的,是不是也碰到过这样的问题??
|
|
|
沙发#
发布于:2007-06-06 14:14
比如我获取.1.3.6.1.2.1.4.22.1.2(ipNetToMediaPhysAddress)的数据的时候,得到的信息是如下格式的信息:
1.3.6.1.2.1.4.22.1.2.26.192.168.0.5 = 00 12 43 BF BD 80 ..C... 1.3.6.1.2.1.4.22.1.2.26.192.168.0.43 = 00 40 D0 58 03 D7 .@.X.. 1.3.6.1.2.1.4.22.1.2.26.192.168.0.97 = 00 0C 29 31 8B 24 ..)1.$ 1.3.6.1.2.1.4.22.1.2.26.192.168.0.168 = 00 18 F3 C0 1F 44 .....D 1.3.6.1.2.1.4.22.1.2.26.192.168.0.170 = 00 0C 29 31 8B 24 ..)1.$ 1.3.6.1.2.1.4.22.1.2.26.192.168.0.180 = 00 C0 9F 8D C8 83 ...... 1.3.6.1.2.1.4.22.1.2.26.192.168.0.236 = 00 D0 B7 7D 67 70 ...}gp 前面有空格,后面还有一些乱码的字符串,其实我只要“00 D0 B7 7D 67 70”就可以了,要是这样的格式的话,我还得做额外的字符串处理,要是数据量很多的话,消耗的资源其实不少的了 |
|
|
板凳#
发布于:2007-06-11 10:31
数据是没有任何问题的. 你对snmp还是不很理解,建议看下协议吧
|
|
地板#
发布于:2007-06-11 13:50
引用第2楼GoodOnline于2007-06-11 10:31发表的 : 你能否说清楚一些?这跟snmp协议有什么关系?我用winsnmp来获取的数据就不会出现后面多余的数据 |
|
|
地下室#
发布于:2007-06-13 16:42
试试加上"0"
1.3.6.1.2.1.4.22.1.2.26.192.168.0.5.0 |
|
5楼#
发布于:2007-06-14 10:53
引用第4楼onduty于2007-06-13 16:42发表的 : 在snmp做get操作的时候才需要加上"0",因为get需要精确指定oid,而get_next的时候是不用加上"0"的,get_next自然会取到此oid的下一个,比如1.3.6.1.2.1.4.22.1.2.26.192.168.0.5的next应该就是1.3.6.1.2.1.4.22.1.2.26.192.168.0.5.0的了,这里的问题不是要不要加上"0"的问题了,而是已经获取了信息之后,snmp++库的重组此信息的时候多了一些数据,我看了snmp++的源代码,在重组mac地址格式的数据的时候,它在最前面是加了空格,而后面多了一些信息,我估计是接收到信息的时候数据长度的问题,有可能是交换机那边发过来的信息和长度就有问题的了,也有可能是snmp++的解析的时候有问题了,有时间再深入snmp++的代码看看了,暂时的解决办法只能是再做特殊的处理了 |
|
|
6楼#
发布于:2007-06-14 10:59
用winsnmp.dll的时候也是需要重组获取到的信息的,特别是对于那些数据类型是Octet的数据,mac地址的数据类型就是octet类型的,要显示为我们平常所看到的XX:XX:XX:XX:XX:XX或者XX-XX-XX-XX-XX-XX等这样的格式,也是需要对octet格式的数据进行重组的了,我用winsnmp.dll的时候,获取得到的octet数组的长度是对的,就是6,这样重组出来的数据也就没问题的了,但用snmp_pp.dll的时候,长度就有问题了,所以重组的时候就多了后面的一些不知道是什么的信息
|
|
|