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

原创 2006年06月01日 18:38:00

前面提到过使用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
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

今天的学习vba

To make this configuration instantly available, put the following macro, named SetEditingView, in th...

基于Tcl/Tk语言的自动化测试平台的实现

基于Tcl/Tk语言的自动化测试平台的实现 来源:电子技术应用2013年第1期 作者:李志报1,2, 袁 亮1,2 2013/3/13 16:34:55 关键词: 自动控制系统|DCS|...

TCL/EXPECT资源收集(最后更新2006/5/29)

本贴主要收集一些我看到过的TCL/EXPECT方面的资源,以及关于自动测试方面的资源。TCL语言中文网:http://www.tclchina.com/    关于TCL语言的中文网站,里面有不少资料...
  • easwy
  • easwy
  • 2006-05-29 15:18
  • 4764

使用Tcl扩展包cwind进行界面自动化测试

cwind是一个控制界面操作的Tcl扩展包,它可以模拟键盘、鼠标的操作,捕获界面信息,控制界面窗口等,类似于QARUN等软件,通过cwind库可以利用tcl脚本方便的实现QARUN的功能,因此可以用于...

TCL/EXPECT自动化测试脚本实例一 --- telnet到目标机器

从今天开始,陆续把我所写的一些自动测试脚本贴上来,希望对初学者有所帮助。由于目前没有找好合适的服务器存放代码,所以代码先贴在blog的正文中,以后再提供完整的代码下载。我的自动化测试脚本运行在debi...
  • easwy
  • easwy
  • 2006-05-30 09:32
  • 5091

TCL/EXPECT自动化测试脚本实例二 --- 主程序

现在介绍一下测试主程序: test.exp。为了方便加入新的测试项目,主程序采用了一种灵活的机制,它根据需要通过source命令调用相应的子测试程序。这样一来,每个测试点都可以单独放到一个文件中,然后...
  • easwy
  • easwy
  • 2006-05-30 10:07
  • 3459

自动化测试-TCL脚本语言

TCL 是一种 脚本语言。最早称为“工具命令语言”"Tool Command Language", 但是目前已经不是这个含义,不过我们仍然称呼它为TCL。 由John Ousterhout创建。 TC...

用Python开发自动化测试脚本

用Python开发自动化测试脚本 通常对于一个稍具规模的系统,一些新的改动势必会带来一些额外的功能回归测试工作,而这个工作是非常繁杂的,人肉的方式一次又一次的重复将会非常的枯燥乏味。     ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)