TCL/EXPECT自动化测试脚本实例七 --- 构造报文测试

王朝网络·other·作者佚名  2007-02-21
宽屏版  字体: |||超大  

前面提到过使用nemesis构造报文进行测试的思路,今天介绍一个这样的脚本。

这个脚本的功能是构造并发送不同源MAC地址的报文,通过这样一个脚本,我们就可以测试交换机每端口最大能学习到的MAC地址的数目。

简单说一下nemesis,它运行在linux上,也可以在windows上运行。在linux上,需要拥有root权限才能构造报文。

它可以用来构造arp, enternet, ip, icmp, igmp, dns, tcp, ospf, rip等类型的报文。实际上,用户可以使用一个文件做为它所构造的报文的内容,从这个角度上讲,它可以用来构造任何类型的报文。

另外,由于它是基于命令行的一组工具,所以能够非常好的和TCL/EXPECT结合使用,完成自动化测试。

这个脚本仍旧由前面介绍的test.exp脚本调用,调用方式是:

./test.exp -ssrc_mac_attack.exp script

此脚本文件的内容(src_mac_attack.exp)如下:

# $Id$

# Construct different source MAC address packets, and send them to switch.

proc src_mac_attack {mac} {

set rc [exec echo "src MAC attack packet $mac" | nemesis ethernet -M 00:01:02:03:04:05 -H $mac -T 0x0800 -P -]

return $rc

}

for {set i 1} {$i < 256} {incr i} {

set mac [constructMac $i]

src_mac_attack $mac

}

脚本很简单,只有一个循环,不断生成新MAC,然后构造报文发送。

简单介绍一下proc src_mac_attack,这个函数中,使用TCL的exec命令来执行linux下的命令。在这里执行的linux命令就是:

echo "src MAC attack packet $mac" | nemesis ethernet -M 00:01:02:03:04:05 -H $mac -T 0x0800 -P -

其中,echo命令的输出通过管道,被送给nemesis命令做输入,echo命令显示的内容将做为所构造的以太报文的内容;

nemesis ethernet命令表明所构造的是以太报文,-M、-H、-T分别指明报文的目的地址、源地址,报文类型。“-P -”则指明报文的内容由标准输入获得,在此例中就是echo命令的输出。

脚本中调用了另外一个自定义函数,这个函数放在commonLib.exp中,用来生成MAC地址(最多可生成65535个不重复的MAC地址),函数内容如下,比较简单,不再赘述:

#************************************************

# Construct MAC address

#

# @PARAMS

# rawMac --- raw MAC address, integer

#

# @RETURN

# the MAC address string

#************************************************

proc constructMac {rawMac} {

set mac "00:00:00:00"

set j [expr "($rawMac >> 8) & 0xFF"]

set k [format "%x" $j]

set mac "$mac:$k"

set j [expr "$rawMac & 0xFF"]

set k [format "%x" $j]

set mac "$mac:$k"

dbgLog "rawMac = $rawMac, mac = $mac"

return $mac

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有