`
insertyou
  • 浏览: 901908 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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

阅读更多

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

分享到:
评论

相关推荐

    #!/usr/bin/expect

    Expect 还可以与其他工具结合使用,如Ansible的`shell`模块配合`expect`模块来处理需要交互的场景,或者在CI/CD流程中进行自动化测试。 5. **注意事项**: - 安全性:尽管 Expect 脚本能提高效率,但存储明文密码...

    Tcl/tk 宝典之一 - Expect讲解

    Expect 是一种基于Tcl(Tool Command Language)的脚本语言扩展,主要应用于自动化脚本编写中,特别是那些需要与远程服务如SSH、FTP等进行交互的场景。通过使用Expect,用户可以模拟人类与系统的交互过程,实现对...

    tcl864安装包

    tcl脚本语言安装包,要安装expect脚本,必须先安装tcl。 一)Tcl 安装 主页: http://www.tcl.tk 下载地址: http://www.tcl.tk/software/tcltk/downloadnow84.tml 1.下载源码包 wget ...

    Tcl/Expect

    Tcl/Expect学习心得:等待操作是很有用的及COM通讯脚本

    expect-5.45-sol10-sparc-local.gz

    expect-5.45-sol10-sparc-local.gz solaris9 安装expect工具方法 在网站http://www.sunfreeware.com/indexsparc9.html下载到对应系统本版软件包 需要下载4个软件包分别是: tcl-8.5a4-sol9-sparc-local.gz tk-8.5a4-...

    expect-5.45-sol9-sparc-local.gz

    expect-5.45-sol9-sparc-local.gz solaris9 安装expect工具方法 在网站http://www.sunfreeware.com/indexsparc9.html下载到对应系统本版软件包 需要下载4个软件包分别是: tcl-8.5a4-sol9-sparc-local.gz tk-8.5a4-...

    禅道自动化测试框架ZenTaoATF.zip

    ZenTaoATF是由禅道开发团队开发的自动化测试框架,它只有一个脚本文件,可以支持各种脚本语言编写的自动化测试脚本,语法简单,使用灵活,后续会和禅道项目管理软件进行绑定和集成。 它的基本工作原理如下: 首先,...

    tcl-expect

    Expect是由Don Libes开发的一个基于TCL的自动化测试工具,用于自动交互式程序。Expect可以用来模拟终端用户的操作,从而实现自动化测试、配置管理等任务。 **特点概述:** - **TCL扩展**:Expect是作为TCL的一个...

    expect5.43.0和tcl8.4.11.zip

    在IT领域,`expect`和`TCL`是两种重要的脚本工具,它们在自动化任务执行、系统管理和网络通信中发挥着关键作用。`Expect`是建立在`TCL`基础上的一个扩展,专为自动交互式应用程序设计,如SSH、telnet等。` Expect...

    expect-5.45-14.el7_1.x86_64.zip 在 centos7 上测试通过

    [root@localhost expect]# rpm -ivh expect-5.45-14.el7_1.x86_64.rpm 准备中... ################################# [100%] 正在升级/安装... 1:expect-5.45-14.el7_1 ################################# [100%] ...

    Tcl.rar_scripting_tcl/tk_脚本 解释

    2. **测试脚本**:在软件开发中,Tcl被广泛用于编写测试脚本,例如在自动化测试框架如Expect中,Tcl用于模拟用户与程序的交互。 3. **教学和研究**:由于其简洁性和易于理解,Tcl常被用于计算机科学的教学和科学...

    TCL_Expect_deja.zip_Exploring.Expect.pdf_deja gnu_tcl_tcl语言_自动化测

    在自动化测试领域,TCL更是扮演了重要的角色,它能够帮助工程师高效地创建自动化测试脚本,从而提高测试效率和准确性。 DejaGNU是GNU项目的一个组成部分,它提供了一个框架,用于测试使用各种语言编写(包括TCL)的...

    expect-5.21-for-win.rar

    Expect是Tcl语言的一个扩展,专门设计用来自动控制交互式应用程序,如telnet、ftp、passwd等,使得脚本能够模拟用户输入,极大地提升了运维和测试的效率。本文将深入探讨如何在Windows系统中安装和使用Expect 5.21...

    expect交互式执行网络命令

    expect实现 shell 交互式网络命令,插件安装: tar xzvf expect5.45.tar.gz cd expect5.45 ./configure --prefix=/usr/expect --with-tcl=/usr/tcl/lib --with-...ln -s /usr/tcl/bin/expect /usr/expect/bin/expect

    Tcl/expect sms gateway-开源

    - Tcl(Tool Command Language)是一种简单易学的脚本语言,常用于快速开发和自动化任务。它的语法简洁,适合编写各种脚本,如系统管理、网络配置和测试工具等。 - 在Tcl/Expect SMS Gateway中,Tcl被用来处理逻辑...

    SigmationTF自动化测试教程

    - 脚本设计:使用特定的脚本语言(如ITCL、EXPECT)来编写自动化测试脚本。 - **配置SigmationTF**:包括系统配置、用户与角色配置、测试床配置等。 #### 四、SigmationTF自动化测试脚本设计 - **GUI自动化测试...

    Tcl语言,expect脚本

    例如,`source e:/tcl&c/hello.tcl`将执行文件`hello.tcl`中的所有Tcl命令。需要注意的是,路径描述应遵循Unix风格,使用`/`作为目录分隔符。 #### 三、置换(Substitution) Tcl提供三种类型的置换功能:变量置换...

    linux下expect的安装方法

    Linux下的`expect`工具是一个强大的自动化管理利器,尤其适合处理那些需要交互式输入的脚本任务,比如自动登录、密码输入、脚本自动化等。它基于Tcl语言,通过模拟用户交互来自动化复杂的命令行操作。`expect`的安装...

    Expect 5.21 for windows

    Expect是一个强大的脚本语言,主要用于自动化与交互式程序的通信,例如telnet、ftp、passwd等。在Windows环境下,这个工具同样能够帮助用户自动化那些需要手动输入命令或确认的流程,从而极大地提高工作效率。 ...

Global site tag (gtag.js) - Google Analytics