cswang
驱动小牛
驱动小牛
  • 注册日期2001-11-05
  • 最后登录2010-03-01
  • 粉丝0
  • 关注0
  • 积分1004分
  • 威望144点
  • 贡献值0点
  • 好评度96点
  • 原创分0分
  • 专家分0分
阅读:5811回复:6

请教一个snmp++获取交换机MAC地址格式的问题

楼主#
更多 发布于:2007-06-06 13:56
我用snmp++来获取交换机的SNMP信息,一般的信息获取都没问题,但对于那些MAC地址格式的信息的获取得到的信息总是有些问题,每个MAC地址串后面还跟着一些无用的数据,试了思科、华三的交换机都是这样,但用一些SNMP浏览器获取得到的信息都不会这样,不知道这是snmp++库的问题还是交换机提供的信息本来就是有这些的?哪位用过snmp++的,是不是也碰到过这样的问题??
瞬息不可挽救,永恒不可企及
cswang
驱动小牛
驱动小牛
  • 注册日期2001-11-05
  • 最后登录2010-03-01
  • 粉丝0
  • 关注0
  • 积分1004分
  • 威望144点
  • 贡献值0点
  • 好评度96点
  • 原创分0分
  • 专家分0分
沙发#
发布于: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”就可以了,要是这样的格式的话,我还得做额外的字符串处理,要是数据量很多的话,消耗的资源其实不少的了
瞬息不可挽救,永恒不可企及
GoodOnline
驱动小牛
驱动小牛
  • 注册日期2007-04-11
  • 最后登录2009-02-28
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望204点
  • 贡献值0点
  • 好评度191点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-06-11 10:31
数据是没有任何问题的. 你对snmp还是不很理解,建议看下协议吧
cswang
驱动小牛
驱动小牛
  • 注册日期2001-11-05
  • 最后登录2010-03-01
  • 粉丝0
  • 关注0
  • 积分1004分
  • 威望144点
  • 贡献值0点
  • 好评度96点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-06-11 13:50
引用第2楼GoodOnline于2007-06-11 10:31发表的  :
数据是没有任何问题的. 你对snmp还是不很理解,建议看下协议吧

你能否说清楚一些?这跟snmp协议有什么关系?我用winsnmp来获取的数据就不会出现后面多余的数据
瞬息不可挽救,永恒不可企及
onduty
驱动牛犊
驱动牛犊
  • 注册日期2006-05-11
  • 最后登录2012-08-14
  • 粉丝0
  • 关注0
  • 积分234分
  • 威望64点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-06-13 16:42
试试加上"0"


1.3.6.1.2.1.4.22.1.2.26.192.168.0.5.0
cswang
驱动小牛
驱动小牛
  • 注册日期2001-11-05
  • 最后登录2010-03-01
  • 粉丝0
  • 关注0
  • 积分1004分
  • 威望144点
  • 贡献值0点
  • 好评度96点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-06-14 10:53
引用第4楼onduty于2007-06-13 16:42发表的  :
试试加上"0"


1.3.6.1.2.1.4.22.1.2.26.192.168.0.5.0

在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++的代码看看了,暂时的解决办法只能是再做特殊的处理了
瞬息不可挽救,永恒不可企及
cswang
驱动小牛
驱动小牛
  • 注册日期2001-11-05
  • 最后登录2010-03-01
  • 粉丝0
  • 关注0
  • 积分1004分
  • 威望144点
  • 贡献值0点
  • 好评度96点
  • 原创分0分
  • 专家分0分
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的时候,长度就有问题了,所以重组的时候就多了后面的一些不知道是什么的信息
瞬息不可挽救,永恒不可企及
游客

返回顶部