IPOP工具下TCL脚本
TCL脚本入门教程
![TCL脚本入门教程](https://img.taocdn.com/s3/m/bd40df2cb94ae45c3b3567ec102de2bd9605decb.png)
TCL脚本入门教程```puts "Hello, TCL!" ;# 输出 Hello, TCL!set name "John" ;# 定义一个变量 nameputs "My name is $name." ;# 输出 My name is John.```在这个例子中,第一行的`puts`命令用于输出文本到控制台,第二行的`set`命令用于定义一个变量,第三行的`puts`命令输出带有变量的文本。
在TCL中,变量需要以`$`开头。
- `set`:用于定义和修改变量的值。
- `if`:用于条件判断,根据条件执行不同的代码块。
- `for`:用于循环执行代码块一定的次数。
- `while`:用于在条件满足的情况下循环执行代码块。
- `proc`:用于定义和调用过程(函数)。
- `expr`:用于进行数学运算和表达式求值。
```set age 25set height 1.75set name "Tom"puts "My age is $age."puts "My height is $height meters."puts "My name is [string toupper $name]."```这个例子中,`set`命令用于定义三个变量,`puts`命令用于输出带有变量的文本。
`string toupper`是TCL中的字符串处理命令,用于将字符串转换为大写。
```set file [open "example.txt" r]set content [read $file]close $fileputs $content```这个例子中,`open`命令用于打开一个文件,`read`命令用于读取文件内容,`close`命令用于关闭文件。
网络工程师调试工具IPOP使用手册
![网络工程师调试工具IPOP使用手册](https://img.taocdn.com/s3/m/9251b7a30975f46526d3e111.png)
■版权声明 本文中出现的任何文字叙述、文档格式、插图、照片、方法、过程等内容,除另有特别注明,版权均属所有,受到有关产权及版权法保IPOP 使用手册■文档编号 ■密级■版本编号 V1.0■日期2014-10-08科技护。
任何个人、机构未经■版本变更记录时间版本2014-10-08 1.0■适用性声明本模板用于撰写科技内外目录表格索引插图索引一. IPOP介绍IPOP是一款设备调试终端工具,功能很强大,集合很多服务、调试、查看手段于一身,主要功能如下:●IP地址动态绑定功能●路由信息查询和配置功能●MAC地址信息查询和修改功能●MAC 、主机信息扫描功能●本机网络报文统计功能●本机端口列表、远程端口扫描功能●端口映射功能●网卡流量统计功能●本机IP报文捕获和发送功能●终端控制功能(支持telnet、dos、ssh、sftp、ftp、com等协议)●TCL脚本支持●多种服务功能(tcp/udp/ping/telnet/ftp/tftp/web/team/syslog/smtp)二. 模块介绍下面按照模块方式来介绍这款工具,先来张截图认识下软件图 2.1 IPOP软件介绍如上图,总共有11个模块,有些模块下面包含多个功能,我会针对以前测试中经常用到的功能做详细介绍,有些地方可能介绍的不全,大家也可以自行研究。
2.2 IP绑定图 2.2 IP绑定本功能为IP地址动态绑定,可以在WIN2000/WINXP/WIN2003/WIN7/WIN2008系统上绑定多个IP地址,可以随时增加和删除。
用于WIN98系统。
注意事项:*所绑定的IP地址为动态绑定,在计算机重启后IP地址会丢失,需要重新绑定;但退出本软件不会导致已绑定的动态IP丢失。
如需启动时生效,请选择“下次重启自动绑定”选项后,再添加需要绑定的IP,以后计算机重启后不须启动本软件即能自动绑定IP。
*本软件可以自动搜索系统中存在网卡,在绑定前请选择正确的网卡。
TCL脚本-序言、工具安装
![TCL脚本-序言、工具安装](https://img.taocdn.com/s3/m/bd6457eab8f67c1cfad6b894.png)
TCL、Python和软件测试自动化Credits About Author前言当前,作为软件质量保证的一个有效过程,软件测试技术引起了越来越多人和公司的注意,并且获得了长足的进展。
在这个领域里面各种思想、方法和工具层出不穷。
并且与软件测试相关的咨询、测试工具也形成了一个较大的产业。
在业界就有不少的公司提供了许许多多的软件测试工具,这些工具都提供了脚本,用户可以编写脚本来使测试工作自动化,它们的出现一定程度上提高了软件测试的效率。
但是很多时候,这些工具并不能够完全满足我们的要求,更多的时候,我们需要开发自己的测试工具,编写自己的自动化测试脚本,来提高测试效率,特别是在针对嵌入式开发的领域。
脚本语言,是不需要编译就能够解释执行的语言。
具有语言层次高,开发迅速,易于扩充,方便移植等特点,正是因为这些特点,在软件测试领域里面获得了广泛的应用。
基本上现在商用工具都支持某种脚本语言:表格0-1商业工具支持的脚本工具名称厂家支持脚本QARunWinRunnerRobotSmartBits自己实现测试工具,编写自动化脚本是一项非常具有挑战性的,但是非常有意义的工作。
选择哪些脚本作为我们测试工具的脚本语言,是需要仔细考虑的事情。
而TCL脚本作为软件测试领域里面最经典的语言,在业界已经获得了广泛的应用。
并且TCL和其他语言相比,有如下几个重要特点:1)简单易学。
TCL脚本基于命令和替换的语法结构,对于有C/C++编程经验或者C Shell 编程经验的而言,非常容易掌握。
2)功能强大,极易扩充。
使用TCL脚本可以完成很多的事情,包括网络Socket编程、GUI图形界面程序开发、数据库应用程序、实现简单的WebServer和FtpServer、实现COM自动化服务器等。
我们只需要极少量的TCL代码就能够完成需要数十倍C代码才能完成的功能。
并且该语言的扩展性非常好,你甚至可以扩充出你自己的语言控制结构!比如实现你自己的switch结构。
Tcl脚本测试入门.doc
![Tcl脚本测试入门.doc](https://img.taocdn.com/s3/m/9d7da463f242336c1eb95e63.png)
Tcl简介Tcl是一种非常简单的编程语言,如果你以前曾经学过编程,那么你只要学习几个小时就可以编写出一些有趣的Tcl程序。
本文将对Tcl的功能做一个大概的介绍。
一般来说,读完本文之后,你就可以开始独立的编写一些简单的Tcl脚本了;不过,要想获得更全面的认识,我们建议你还是去参考几本目前已经出版的Tcl书籍。
基本语法Tcl脚本由一些被换行符或是分号分开的命令所组成。
命令都有相同的基本格式,如下面的例子所示:expr 20 + 10 该命令计算20加10的和,并返回结果30。
你可以把这个例子以及本文中的所有其它的例子键入到tclsh这样的Tcl应用程序中来验证它们;在一个命令结束后,tclsh将打印出它的结果。
每个Tcl命令都含有一个或多个被空格分开的单词,在这个例子中有4个单词:expr,20,+,和10。
第一个单词是一个命令名,其余的单词是这个命令的参数。
所有的Tcl命令都含有一些单词,但不同的命令对他们的参数有不同的处理方式。
expr命令把它的所有参数看作是一个算术表达式,计算表达式的结果,并以字符串的形式返回结果。
在expr命令中,单词之间的分隔不是很重要:同样的命令你可以写成这种形式:expr 20+10 不过,对大部分的命令来说,单词的结构是很重要的。
每个单词都会用于不同的目的。
所有的Tcl命令都返回结果。
如果一个命令产生了没有意义的结果,那么它将返回一个空字符串作为它的结果。
变量Tcl允许你在变量中保存数值,并且可以在后续的命令中使用这些数值。
set命令用于对变量进行读写操作。
比如,下面的命令对变量x赋值为32。
set x 32 这个命令返回变量的新值。
你可以让set只带一个参数来读出变量的数值:set x 你不需要在Tcl中声明变量:变量在第一次set的时候被自动创建。
Tcl变量没有类型:任何值可以赋给任何变量。
要想在一个命令中使用变量的值,可以采用变量替代,如下例所示:expr $x*3 当一个字符$出现在一个命令中的时候,Tcl把跟在它后面的字母和数字看作是一个变量名并且将其替换成变量的值。
TCL脚本技术及用法
![TCL脚本技术及用法](https://img.taocdn.com/s3/m/bffc5a7cf242336c1eb95ee6.png)
TCL内建命令
TCL还提供三种特殊的参数形式: 首先,你可以定义一个没有参数的过程。 % proc add {} { expr 2+3} 其次,可以定义具有缺省参数值的过程。 % proc add {val1 {val2 2} {val3 3}} { % expr $val1+$val2+$val3 %} 另外,TCL的过程定义还支持可变个数的参数,如果 过程的最后一个参数是args, 那么就表示这个过程支持 可变个数的参数调用。
引言
TCL提供了C语言的调用接口,可以很容易地嵌入到C 程序中;由于TCL提供了与C的接口函数,所以可以 在C编写的应用中调用TCL的库函数,执行TCL的命令 或脚本。具体的工作有: ①创建TCL的解释器; ②执行TCL的命令或脚本; ③对返回代码进行处理; ④撤消TCL的解释器。
引言
基本的C程序结构如下: #include <stdio.h> #include <tcl.h> main() { Tcl_Interp *ip; // 定义解释器 int code; ip=Tcl_CreateInterp(); // 创建该解释器 code=Tcl_EvalFile(ip, "test.tcl"); // 执行文件“test.tcl” if(code!=TCL_OK) exit(1); // 是否成功 else exit(0); }
TCL语法
置换
TCL解释器在分析命令时把所有的命令参数当做字符 串对待,置换的作用是获取命令参数所对应的值,而 非命令参数所代表的字符串。 置换包括变量置换、命令置换和反斜杠置换。变量置 换传递的是变量的值,命令置换传递的是命令参数的 计算结果,反斜杠置换主要用于在单词符号中插入诸 如换行符、空格、[、$等被TCL解释器当作特殊符号 对待的字符。置换可以嵌套。
TCL教程(中文)(2024)
![TCL教程(中文)(2024)](https://img.taocdn.com/s3/m/2b440063cec789eb172ded630b1c59eef8c79adf.png)
B
C
D
脚本执行过程
详细剖析TCL脚本的执行过程,包括命令 解析、变量替换、执行结果输出等步骤。
控制结构
介绍TCL中的条件判断(if-else)、循环 (foreach、while)等控制结构,以及如 何使用它们来编写逻辑清晰的脚本。
2024/1/29
20
复杂脚本优化技巧分享
代码重用与模块化
讲解如何将重复的代码片段抽象成函数或过 程,实现代码重用和模块化,提高脚本的可 维护性和可读性。
比较运算符
TCL支持比较运算符,如等于(`==`)、不等于(`!=`)、大于 (`>`)、小于(`<`)等。比较运算的结果为布尔值,即真或假 。
逻辑运算符
TCL支持逻辑运算符,如逻辑与(`&&`)、逻辑或(`||`)、逻 辑非(`!`)等。逻辑运算用于组合多个条件,并根据条件的 真假返回相应的结果。
TCL教程(中文)
2024/1/29
1
目录
2024/1/29
• TCL基础知识 • TCL基本语法 • TCL高级特性 • TCL扩展功能 • TCL实例分析 • TCL学习资源推荐
2
TCL基础知识
01
2024/1/29
3
TCL概述
TCL是一种脚本语言
TCL代表“工具命令语言”,是一 种广泛用于嵌入式系统和应用程 序的脚本语言。
I/O流处理
TCL支持I/O流的概念,可以通过管道命令实现不同命令之间的数据传 递和处理。
2024/1/29
14
TCL扩展功能
04
2024/1/29
15
Tk图形界面开发库介绍
Tk概述
Tk是TCL的图形用户界面工具包, 提供了一套丰富的图形控件和布局 管理器,用于创建跨平台的GUI应 用程序。
TCL脚本实例+检查IP的脚本源码
![TCL脚本实例+检查IP的脚本源码](https://img.taocdn.com/s3/m/08a971d528ea81c758f5782b.png)
}
set tmpStr [format "%-30s%s" [string trimright $ipStr] $result]
setProfile $ipListFile $block $ipKey $tmpStr
}
}
if {[llength $pingSuccess] >= 1} {
10.50.86.25
10.50.86.28
10.50.86.31
10.50.86.32
10.50.86.35
10.50.86.36
10.50.53.22
10.56.90.100
10.56.90.101
10.50.86.10
10.50.86.11
10.50.86.12
10.50.86.13
10.50.86.18
Totally 17 ping successfully as below:
10.50.100.51
10.50.100.52
10.50.100.55
10.50.100.56
10.50.100.58
10.50.100.59
10.50.100.60
10.50.100.61
10.50.100.62
10.50.100.63
puts "\n==============================================================================\
\nTotally [llength $pingSuccess] ping successfully as below:"
从FTP下载指定文件的TCL脚本
![从FTP下载指定文件的TCL脚本](https://img.taocdn.com/s3/m/6bb5024fd1f34693dbef3e45.png)
expect "*220*" send "anonymous\r" expect "*331*" send "\r"
运行速度快
CONTENTS
04Part Four 代码结果
代码结果
package require Expect ##加载expect包 proc fftp { } { ##函数
201 7 从 f t p 下 载 指 定 文 件 的 Tc l 脚 本
By xxxxx
CONTENTS
01 Part One 需求分析 02 Part Two 设计分析 03 Part Three 深入思考 04 Part Four 代码结果
CONTENTS
01Part One 需求分析
需求分析
Thank s
By xxxx
spawn ftp ##启动进程 expect "ftp>" ##打开目标FTP send "open 10.132.254.1 2771\r" expect "*220*" ##输入用户名 send "anonymous\r" expect "*331*" ##输入密码 send "\r" expect "ftp>"##进入目标文件夹 send "cd network_test_auto\r" expect "ftp>"##下载文件 send "get ftp_target.txt\r" expect "ftp>" } Fftp ##调用函数
IPOP帮助文档
![IPOP帮助文档](https://img.taocdn.com/s3/m/d9548909a300a6c30c229f57.png)
IPOP V2.4帮助文档1 概述 (2)2 使用介绍 (3)2.1 初始界面介绍 (3)2.2 IP地址动态绑定功能 (4)2.3 路由配置功能 (10)2.4 MAC维护功能 (10)2.5 网络统计功能 (13)2.6 端口信息查询功能 (14)2.7 端口映射功能 (15)2.8 网卡流量指示功能 (19)2.9 IP报文捕获功能 (21)2.10 终端工具功能 (25)2.10.1 主要功能 (25)2.10.2 文本发送功能 (32)2.10.3 TCL发送功能 (35)1 概述IPOP软件是一个IP工具的集合,最原始的功能是IP地址动态绑定,后续在此基础上不断的进行了扩充,就形成了现在的模样。
IPOP不支持WIN95、WIN98系统,只支持WIN2000/XP及以上的操作系统。
IPOP目前的主要功能有:✧IP地址动态绑定功能;✧路由信息查询和配置功能;✧MAC地址信息查询、更改功能;✧MAC、主机信息扫描功能;✧MAC地址与厂家对应表;✧本机网络报文统计功能;✧本机端口列表、远程端口扫描功能;✧常用端口对照表;✧端口映射功能;✧网卡流量统计和指示功能;✧本机IP报文捕获和发送功能;✧多窗口telnet、串口维护终端工具。
2 使用介绍2.1 初始界面介绍程序的初始界面如下图所示:本软件具有换肤功能,点击左上角的图标可以选择不同的界面风格:软件缺省为自动换肤。
软件界面的显示有“窗口自适应”选项,会自动根据屏幕字体的大小来设置界面的大小,如果用户想自己调整窗口大小,并在以后启动时使用,则需要去除此选项,并且选择“保存窗口大小”选项。
在界面的下方有两个图标按钮:,分别用于更换皮肤和使程序最小化(变为windows右下角任务栏中的小图标)。
最小化后,可以用鼠标双击图标重新打开程序界面,也可以在图标上点右键,会弹出相应的菜单:弹出菜单说明:✧显示配置:显示IPOP程序主界面;✧地址绑定:绑定界面上设置的单IP地址;✧全部去除:去除所有动态绑定的IP地址;✧悬浮显示:以悬浮窗口的形式实时显示网卡的收发流量,如下图所示,其中红色部分为接收流量,蓝色部分为发送流量,缺省单位为bps,也可以以图形方式显示,在悬浮窗点右键可以进行选择:右键菜单中可以设置字体和显示的方式。
Spirent Testcenter 自动化测试脚本 TCL(1)
![Spirent Testcenter 自动化测试脚本 TCL(1)](https://img.taocdn.com/s3/m/af466a6ff242336c1eb95e8f.png)
Spirent Testcenter自动化测试脚本TCL -1基本功能2015-06-18 浏览(69) #!/bin/sh# aTemplate.tclexec tclsh "$0" ${1+"$@"}#-----------------------------------------------------###-----------------------------------------------------#引用STC API ,SpirentTestCenter.tcl的路径source {C:ProgramFilesSpirentCommunicationsSpirentTestCenter4.20Spirent TestCenterApplicationSpirentTestCenter.tcl}#开启日志,-logTo:日志保存路径,使用stdout为标准输出; -loglevel:可选DEBUG、INFO 、WARN 和ERROR 四种;stc::configautomationoptions -logTo "aTemplateLog.txt" -logLevel DEBUG #配置机框Ip槽位端口号set chassisAddress "192.168.0.100"set slotPort1 "8/25"set slotPort2 "8/26"#创建一个项目set ProjectA [stc::create project]#在项目ProjextA下创建一个发送端口和一个接收端口set TxPort [stc::create port -under $ProjectA]set RxPort [stc::create port -under $ProjectA]set portReturn [stc::config $TxPort -location "//$chassisAddress/$slotPort1"] set portReturn [stc::config $RxPort -location "//$chassisAddress/$slotPort2"]#配置端口类型,根据实际端口类型选择参数:Ethernet10GigFiber、Ethernet100GigFiber、Ethernet40GigFiber、Ethernet10GigCopper、EthernetCopper等;set ethernetFiber(1) [stc::create "Ethernet10GigFiber" -under $TxPort-Name "ethernetFiber 1"]set ethernetFiber(2) [stc::create "Ethernet10GigFiber" -under $RxPort-Name "ethernetFiber 2"]#在发送端口下创建StreamBlock(1)set StreamBlock(1) [stc::create "StreamBlock"-under $TxPort-frameConfig ""-FrameLengthMode "FIXED"-FixedFrameLength "222"-name "StreamBlock_1"]#在StreamBlock(1)中添加EthII头set StrEthII [stc::create ethernet:EthernetII -under $StreamBlock(1) -name eht_1 -srcMac 11:11:11:11:11:11 -dstMac 22:22:22:22:22:22 ]#添加IPv4头set strIPv4 [stc::create ipv4:IPv4 -under $StreamBlock(1) -name Ipv4_1 -sourceAddr 10.10.10.10 -destAddr 20.20.20.20]#添加TCP头set strTcp [stc::create tcp:Tcp -under $StreamBlock(1) -name tcp1-sourcePort 10 -destPort 20 ]#创建Streamblock2set StreamBlock(2) [stc::create "StreamBlock"-under $TxPort-frameConfig ""-FrameLengthMode "FIXED"-FixedFrameLength "222"-name "StreamBlock_2"]set StrEthII [stc::create ethernet:EthernetII -under $StreamBlock(2) -name eht_2 -srcMac 31:11:11:11:11:11 -dstMac 42:22:22:22:22:22 ]#添加IPv4头set strIPv4 [stc::create ipv4:IPv4 -under $StreamBlock(2) -name Ipv4_2-sourceAddr 40.40.40.40 -destAddr 50.50.50.50]#添加TCP头set strTcp [stc::create udp:Udp -under $StreamBlock(2) -name tcp_2-sourcePort 40 -destPort 50 ]#配置StreamBlock(1)的modifier 可以选择RangeModifer、RandomModifier、TableModifier#StreamBlock1 源Ip随机set RandomModifier1 [stc::create RandomModifier -under $StreamBlock(1) -Mask {0.0.0.255} -RecycleCount 10 -Offset 0 -EnableStream FALSE-OffsetReference {Ipv4_1.sourceAddr} ]#StreamBlock2 目的Ip递增set RangeModifier2 [stc::create RangeModifier -under $StreamBlock(2)-ModifierMode INCR -Mask {0.0.255.0} -StepValue {0.0.1.0}-RecycleCount 10 -RepeatCount 0 -Data {0.0.50.0} -EnableStream FALSE -Offset 0 -OffsetReference {Ipv4_2.destAddr} -Active true]#在发送端口创建generatorset generator1 [stc::get $TxPort -children-Generator ]stc::config $generator1 -Name "Generator_1"#配置generator1 ,set generatorConfig1 [stc::get $generator1 -children-GeneratorConfig ]#-------------------------------配置说明--------------------------------------------#SchedulingModes属性,可选参数:PORT_BASED 、RATE_BASED 、PRIORITY_BASED 、MANUAL_BASED#DurationMode属性,可选参数:CONTINUOUS 、BURSTS 、SECONDS 等,#LoadUnit属性,可选参数:PERCENT_LINE_RATE 、FRAMES_PER_SECOND 、BITS_PER_SECOND 、# KILOBITS_PER_SECOND 、MEGABITS_PER_SECOND 、INTER_BURST_GAP#--------------------------------------------------------------------------------- stc::config $generatorConfig1 -SchedulingMode "PORT_BASED"-DurationMode "BURSTS"-BurstSize 1-Duration 20#在接收端口创建analyzerset analyzer1 [stc::get $RxPort -children-Analyzer]#配置analyzerstc::config $analyzer1 -Name "Analyzer 1"set analyzerConfig1 [stc::get $analyzer1 -children-AnalyzerConfig]#-------------------------------配置说明-------------------------------------------- #TimestampLatchMode属性,可选参数:START_OF_FRAME 、END_OF_FRAME##--------------------------------------------------------------------------------- stc::config $analyzerConfig1 -TimestampLatchMode "END_OF_FRAME" -JumboFrameThreshold "1500" -OversizeFrameThreshold "2000"-UndersizeFrameThreshold "64" -AdvSeqCheckerLateThreshold "1000" -Name "AnalyzerConfig_1"#配置实时结果获取#结果保存在与脚本相同路径下,结果文件名为resultset generatorResult [ stc::subscribe -Parent $ProjectA-ResultParent $TxPort-ConfigType Generator-resulttypeGeneratorPortResults-filenameprefix "result"]set analyzerResult [ stc::subscribe -Parent $ProjectA-ResultParent $RxPort-ConfigType Analyzer-resulttypeAnalyzerPortResults-filenameprefix "result" ]#连接机框set resultReturn [ stc::connect $chassisAddress]#占用端口set resultReturn [ stc::reserve "//$chassisAddress/$slotPort1"]set resultReturn [ stc::reserve "//$chassisAddress/$slotPort2"]#配置抓包端口set captureRx [stc::get $RxPort -children-capture]set captureTx [stc::get $TxPort -children-capture]#-----------------------------------配置说明-------------------------------------#mode 属性,可选参数:REGULAR_MODE,抓所有报文;SIG_MODE:抓有signature的报文。
网络工程师调试工具IPOP使用手册
![网络工程师调试工具IPOP使用手册](https://img.taocdn.com/s3/m/9384d0cc5727a5e9846a61b9.png)
IPOP运用手册■文档编号请输入文档编号■ 密级请输入文档密级■版本编号■ 日期1008©2021科技本文中消失的任何文字论述.文档格局.插图.照片.办法.进程等内容,除尚有特殊注明,版权均属科技所有,受到有关产权及版权法呵护.任何小我.机构未经科技的书面授权允许,不得以任何方法复制或引用本文的任何片段.■ 版本变动记载时光版本解释修正人1008 初稿陈飞■ 实用性声明本模板用于撰写科技表里各类正式文件,包含技巧手册.标书.白皮书.会议通知.公司轨制等文档运用.目次一. 章标题11.1一级末节标题11.1.1 二级末节标题11.2标题与正文的样式名1二. 列表符号与列表编号12.1列表符号12.2列表编号12.3项目符号与项目编号的样式名1三. 图片.表格与公式13.1图片13.2表格13.3公式13.4图片与表格的样式名1四. 其他14.1附注和脚注14.2文本引用与填补材料14.3文本强调1??????其他经常运用样式名附录A附录标题一A 附录标题二A 附录标题三表格索引表 1.1 标题与正文的样式名1表 2.1 项目符号与项目编号的样式名1表 3.1 标题行列型表格示例1表 3.2 无标题列型表格示例1表 3.3 无标题行型表格示例1表 3.4 图片与表格的样式名1表 4.1 其他经常运用样式名1插图索引图 3.1 图片示例1一. IPOP介绍IPOP是一款装备调试终端对象,功效很壮大,聚集许多办事.调试.检讨手腕于一身,重要功效如下:●IP地址动态绑定功效●路由信息查询和设置装备摆设功效●MAC地址信息查询和修正功效●MAC .主机信息扫描功效●本机收集报文统计功效●本机端口列表.长途端口扫描功效●端口映射功效●网卡流量统计功效●本机IP报文捕获和发送功效●终端掌握功效(支撑等协定)●TCL剧本支撑●多种办事功效(tcp/udp/ping/telnet/ftp/tftp/web/team/syslog/smtp)二. 模块介绍下面按照模块方法来介绍这款对象,先来张截图熟习下软件图 2.1 IPOP软件介绍如上图,总共有11个模块,有些模块下面包含多个功效,我会针对以前测试中经经常运用到的功效做具体介绍,有些地方可能介绍的不全,大家也可以自行研讨.2.2 IP绑定图 2.2 IP绑定本功效为IP地址动态绑定,可以在WIN2000/WINXP/WIN/WIN7/WIN体系上绑定多个IP地址,可以随时增长和删除.用于WIN98体系.留意事项:*所绑定的IP地址为动态绑定,在盘算机重启后IP地址会丧掉,须要从新绑定;但退出本软件不会导致已绑定的动态IP丧掉.如需启动时生效,请选择“下次重启主动绑定”选项后,再添加须要绑定的IP,今后盘算机重启后不须启动本软件即能主动绑定IP.*本软件可以主动搜刮体系中消失网卡,在绑定前请选择准确的网卡.*多IP地址绑定可以成批的绑定IP,规矩如下:终止的IP地址必须大于肇端的IP地址.地址递增为各地址段的递增规矩,如肇端地址为192.168.0.1,终止地址为192.168.4.2,地址递增为0.0.2.1,则增长的IP地址为:192.168.0.1 192.168.0.2192.168.2.1 192.168.2.2*在网卡网线断开重连或无线收集断开重连时,动态IP地址会丧掉,假如想在此种情形下保持动态IP不变,请选择“断线不丧掉动态IP”选项,此选项只需设置一次,鄙人次盘算机重启后一向生效.2.3 路由图 2.3 路由进入此模块后展现的是本机的路由表,可以鄙人面路由设置装备摆设栏里对路由进行增长和删除.留意事项:所添加的路由为动态绑定,在盘算机重启后IP地址会丧掉,须要从新绑定;但退出本软件不会导致已绑定的动态路由丧掉.如需重启后还生效,须要在运行cmd里经由过程route add形势添加,最后加p参数,不然重启后路由会丧掉.如下图:图 2.4 Win7下添加永远静态路由2.4 MAC信息图 2.5 MAC信息MAC信息模块重要供给网卡MAC地址修正.MAC地址扫描.IP地址扫描功效;MAC厂家信息对比表,可以依据mac地址的前6位查询到对应的厂家,也可以依据厂家的名字查询到对应的mac地址.留意事项:IP段主机扫描只针对支撑NETBIOS协定的主机进行扫描,IP地址段可以和本机不在统一网段,即可以跨越路由器;而IP段MAC扫描针对所有IP协定的装备进行扫描,但扫描IP段必须和本机为统一网段.2.5 收集统计图 2.6 收集统计本模块重要对收集的收发包进行具体统计,包含不合的错包统计.2.6 端口信息图 2.7 端口信息本模块供给两个功效:当地端口扫描和远端端口扫描.当地端口扫描的成果除了能看出回话的五元组外,假如是主动开辟端口,还能看出是什么程序打开的.(此功效很好用,有时刻向凋谢某端口,但是体系却提醒次端口被占用,可以在这里找到对应的程序,并且右击停滞它.)远端端口扫描:可以指定远端主机的肇端IP.终止IP,肇端扫描的端标语.终止端标语以及代发扫描信息的网卡IP,扫描的成果在右下方展现.下图是端口信息对比表,列出了1024以内端标语对应的端口名.协定类型和描写信息图 2.8 端口信息对比表2.7 端口映射图 2.9 端口映射端口映射又叫端口重定向,是将拜访本机某端口的衔接要求,转发至本机或其他主机端口的一项功效,其运用如下:1、应程序的端口更改.如将当地web办事器的端口由80改为8080;2、长途端口代理.如在一台网关盘算机上做端口映射,可以实现由公网直接拜访私网资本.相似NTA功效等.运用步调:1、选择当地地址,指定当地端口,指定映射地址.端口,选择tcp或者udp协定2、指定好映射关系后,点增长按钮3、点开端映射然后可以经由过程本机IP+当地端口拜访映射地址的资本了2.8 网卡流量图 2.10 网卡流量本模块重要供给以下功效:统计网卡的收发包速度情形,可以按照字节或者比特显示,可以调剂采样时光网卡的端口速度.MTU.MAC地址进行展现修正MTU对网卡的收发包字节数进行统计,并供给重置功效对网卡收发包速度统计供给及时存盘功效(记载收.发包速度bps及当前的时光戳)对网卡当前的收发包速度供给悬浮窗显示2.9 报文捕获图 2.11 报文捕获报文捕获功效即抓包功效,信任大家都很熟习,这里就不做多介绍.2.10 终端对象图 2.12 终端对象终端对象可以说是这个软件的焦点部分之一,功效异常壮大,下面先枚举下重要功效:终端掌握功效,相似于secureCRT,支撑等协定;日记记载功效,这个功效比secureCRT的记载回话壮大;衔接共享功效,可以经由过程当地某个端口共享此窗口回话;添加功效按钮,是为了添加速捷按钮;字符串匹配功效,匹配到字符串后可以设置响应的动作;发送窗口,供给文本和tcl方法发送,便利主动化操纵; 快捷键修正功效;文件发送功效,支撑的发送协定有xmodem等modem协定.下面是终端对象的帮忙文档:点击“新建衔接”图标可以树立多个telnet或串口保护终端窗口;在窗口标题上双击可以封闭响应的窗口;在终端窗口上点击右键可以弹出响应的菜单(非主动拷贝模式);窗口切换:运用快捷键"Alt+数字"可以切换到响应的终端窗口,运用"ALT+`"依次切换窗口.快捷键:PageUP 向上翻页PageDown 向下翻页Home 向上移一行End 向下移一行CTRL+A 复制所有窗口内容到粘贴板CTRL+D 消除窗口内容CTRL+C 复制所选内容CTRL+V 发送粘贴板内容到终端CTRL+N 新建终端窗口发送窗口的快捷键:F8:发送选中字符串或当前光标地点行的字符串F9:开端/停滞发送F10:清空发送窗口内容TCL方法发送窗口的快捷键:F7:显示/隐蔽TCL调试输出窗口F8:履行选中剧本或当前光标地点行的剧本F9:开端/停滞履行剧本F10:清空TCL窗口内容字体.布风景设置:点“字体”.“布风景”按钮可以设置响应窗口的字体和布风景,设置后,后续打开的窗口也缺省为此字体和布风景.显示状况切换:点"显示状况切换"按钮,可以‘暂停/持续’屏幕的打印,暂停时从终端吸收的数据保管在缓冲区中,不在屏幕显示,持续恢复后再显示在屏幕上.存盘状况切换:可以在终端窗口操纵进程中切换存盘状况,点击图标为绿色时,开端存盘,程序会在运行目次新建一个存盘文件,文件名为当前时光,具体文件名在左下角的状况栏显示;点击图标为红色时,停滞存盘,封闭存盘文件.功效按钮:功效按钮相当于鼠标点击的快捷键,点“添加功效按钮”可以设置按钮的名称和要发送的字符串,设置后会在状况栏右侧生成响应的按钮,当点击功效按钮时,程序会将功效按钮所界说的语句发送给当前激活的终端窗口,功效按钮可以存盘,当以缺省文件名保管在程序目次时,下次程序运行时会主动载入功效按钮.字符串匹配:字符串匹配用于搜刮响应终端窗口中的字符串,当从终端接送到此字符串后,可以履行一系列的自界说操纵,比方打印当前时光.向终端发送响应字符串等等.留意进行了匹配字符串设置装备摆设后,须要点“匹配状况切换”图标才干使匹配功效生效.HEX显示:将从终端接送的数据以16进制格局显示发送窗口:可以将发送窗口中的字符串以行动单位,经由过程必定的延时掌握发送至终端窗口,便于主动化测试.发送窗口具有一个简略的字符串文本结构功效.TCL发送可以经由过程TCL 脚本来掌握字符串的发送.主动拷贝:当树立终端窗口时选中了“主动拷贝”选项后,在终端窗口可以实现用鼠标左键选中文本即拷贝的功效,点击鼠标右键就可以实现粘贴.后面我会举例对这个功效做具体介绍.2.11 办事图 2.13 办事此模块主如果简略的实现各类经常运用的办事TCP :实现tcp客户端和server端功效UDP:实现udp客户端和server端功效PING:向指定IP提议ping,记载ping的次数.错误数.丢包率,延迟等,并且可以存盘TELNET:实现telnet办事器功效FTP:实现ftp办事器功效TFTP:实现tftp办事器功效WEB:实现web办事器功效TEAM:SYSLOG:实现syslog办事器功效SNMP:下面我会举两个例子简略做介绍2.12 报文发送图 2.14 报文发送本模块重要实现报文发送功效,可以用于做一些简略的功效测试.已实现的协定有ARP/IP/ICMP/UDP/TCP/IGMP,运用层数据可以在底层基本上添加数据本身结构.三. 重点功效介绍与演示IPOP对象功效比较多,下面就侧重介绍下我在测试中,运用比较多,认为重要的功效.3.1 终端掌握功效在“终端掌握”模块,点击“新建衔接”图标可以树立多个telnet或串口保护终端窗口图 3.15 衔接掌握设置图3.1.2 衔接方法IP类型:支撑IPv4和IPv6支撑的协定有:支撑登录模式:支撑主动登录(衔接时主动输入暗码)图 3.16 主动登录设置3.1.3 终端串口设置图 3.17 终端窗口设置支撑缓冲行数设置:25~10000,默认500支撑每行列数设置:80/132(即行宽度)3.1.4 日记保管此功效是保管在终端操纵的日记,将每一步操纵到记载在文本文件中.在测试中,此功效异常重要,特殊是运用敕令行测试,可以完全的记载操纵.日记启用和停用在两个地方可以掌握,如下图:图 3.18 日记开关在图中①地位:主动存盘:设置存盘目次,勾选前面的框是主动存盘,文件名称是“衔接名称+时光戳”日记保管方法:可以选用追加方法和单独存放的模式文件超出指定大小后,主动转存增长时光戳:在记载日记时,准时增长时光戳图中②地位是日记记载的状况灯,绿色暗示在记载日记,红色暗示未记载日记图中③地位是:衔接装备的协定IP-状况-日记存储地位-衔接时光-当前体系时光;这里有个很好的功效,直接双击存储路径就能打开日记.3.1.5 衔接共享衔接共享功效是把当前的窗口经由过程凋谢当地指定端口的方法共享出来,可以telnet+ip+port的方法来拜访.在有些场合这个功效照样很好用的,如开辟.测试定位问题时;或者异地演示后果时等.图 3.19 衔接共享按上图设置,共享端口可以本身指定,设置完成后,点开端共享/停滞共享.在cmd里直接telnet 127.0.0.1 1002就可以了(这里是在本机演示,用的环回口IP,,其它主机直接拜访运行IPOP 对象的pc的IP就行).留意:共享的窗口多人衔接后,同时只能一个操纵,显示及时同步的.3.1.6 添加功效按钮功效按钮就是快捷按钮,设置某个按钮发送指定字符串,点此按钮后就会发送指定的字符串到当前窗口或者所有已打开的窗口.如下图:图 3.20 功效按钮演示点①标识表记标帜的小图标,然后设置发送的字符串,肯定后在图③地位展现,须要发送此字符串时,单击“体系运行时光”这个按钮,字符串就会发送到当前窗口,如图④所示.3.1.7 发送窗口发送窗口主如果经由过程文本方法和TCL方法向当前窗口准时.轮回的发送一些指令,实现部分主动化测试.3.1.7.1 举例1文本发送需求:每隔10秒查询一次路由表点开端发送3.1.7.2 举例2文本发送结构在文本发送窗口左下角点“结构”,如下图红①记地位,然后在文本结构框里按下面格局填写生成文本,如下图开端发送3.1.7.3 举例3tcl发送需求:查询网卡eth0子接口1到9的IP地址运用举例里的for轮回实现写好剧本后,点开端履行3.1.8 端口映射演示IPOP映射设置装备摆设IPOP日记3.1.9 办事搭建3.1.9.1 Web办事搭建指定好对应的路径和端口,点start即可测试3.1.9.2 FTP办事搭建设置对应的路径.端口和动作,点start即可用户名和暗码是在里设置测试IPOP 日记其它办事就不在这里一一列举了,大家可以自行研讨.四. IPOP设置选项IPOP设置选项在界面的左上角可以设置中英文,体系设置装备摆设的导入导出,缺省设置装备摆设的恢复,以及选项设置.4.1 体系选项设置体系开机自启动,窗口自顺应等4.2 终端保护选项发送字符串时光距离延时设置发送窗口缺省延迟设置输出缓冲字符串设置断线后重连消除屏幕设置中止断线主动重连设置终端准时发送空字符串保持在线设置表红色的都是在运用中异常重要的功效,特殊是用来做监控log时,有些装备会有监控衔接没有输入和输出就消除衔接的设置,这两个设置就异常有用了.。
TCL脚本语言-12-程序库和程序包
![TCL脚本语言-12-程序库和程序包](https://img.taocdn.com/s3/m/536f9bacdd3383c4bb4cd215.png)
和寻找这个未知命令;如果找到则执行它,返回结果; 5. 如果 auto_load 没有找到该命令的实现,那么就判断是否是处在交互模式下;如果
是交互模式: a) 并且没有定义全局变量 auto_noexec,那么就调用 auto_execok 命令来判断这个
1. 每一个 TCL 应用程序都应该有一个 init.tcl 文件,该文件会做一些初始化的工作, 这个文件都位于 info library 命令所返回的目录中。
2. unknown 命令就是在这个 init.tcl 文件中定义的。 例如我现在使用的 ActiveTcl,运行 info library 命令,返回解释器的库目录为:
auto_load:加载程序库
ቤተ መጻሕፍቲ ባይዱ
auto_load 命令是在 init.tcl 中定义,在解释器初始化的时候被创建。当解释器碰到了未 定义命令的时候,unknown 命令会被调用,在 unknown 中会调用 auto_load 命令来寻找这个
作者:雷雨后
Email: leiyuhou010@
TCL、Python 和软件测试自动化
143
未定义命令。弄清楚 auto_load 的执行机制,会让我们更加清楚 TCL 程序库(library)的工 作机制和自动加载的原理。
首先得介绍一下和 aoto_load 相关的两个全局变量: 1. auto_path:列表变量,其每一个元素是库文件所在的目录。这个变量在解释器初始
% info library C:/Tcl/lib/tcl8.4
在这个目录下存在文件 init.tcl,其中就定义了 unknown 命令。大家有兴趣可以直接看看 这个命令的源代码。
IPOPTCL扩展命令说明
![IPOPTCL扩展命令说明](https://img.taocdn.com/s3/m/99e2de2b17fc700abb68a98271fe910ef02dae53.png)
IPOPTCL扩展命令说明TCL扩展命令说明:一、局部TCL命令tsend:向终端窗口发送字符串语法:tsend commandline [-r] [-s string1 [string2]] [-t timeout]说明:commandline是向终端发送的命令字符串。
如果有-r参数,表示在命令返回值中将保存终端的返回信息,-t参数指定发送命令等待多长时间(毫秒)返回,如果想命令在指定的时间之前返回,可以添加-s 参数,在-s参数中指定字符串string1和string2,那么一旦终端的返回信息中包含string1或string2,tsend立即返回。
例子1:#发送hello至终端维护窗口tsend "hello"#发送help至终端维护窗口,并搜索结果中是否有“Exit”语句,#最后将结果输出至输出窗口puts [tsend help -r -s Exit -t 2000]msend:向终端窗口发送字符串语法:msend 字符串[等待字符串] [等待超时时间]说明:'等待字符串'和'等待超时时间'为可选参数,如无此参数,则向维护窗口发完字符后返回,如有等待字符串,则发送字符串后,一直等待指定的字符串出现,TCL脚本才往下继续执行,这里可以指定等待超时时间,即如超过超时时间后任没有收到需等待的字符串,也往下执行脚本,超时时间的单位是毫秒。
返回值:返回值是命令发送前到语句执行完成之间收到的字符串。
例子1:msend "hello"#发送hello至终端维护窗口例子2msend "hello""command" 2000#发送hello,然后等待终端的返回,如收到返回的字符串中包含“command”则立即往下执行,如果在2秒中内没有收到,则2秒后往下执行。
fsend:向终端窗口发送文件语法:fsend 文件名[发送协议]说明:发送协议与文件发送时的“发送协议”选择一致,1为xmodem协议,缺省协议为9(ASCII模式)例子1:fsend c:\\a.txt#以文本方式发送文件c:\a.txt至终端维护窗口fsend aa.bin 1#以Xmodem方式发送文件aa.bin至终端维护窗口tclear:清除维护窗口语法:tcleartout:向TCL调试/输出窗口发送字符串语法:tout 字符串例子:tout $i#将变量i发送至TCL调试/输出窗口toutclear:清空调试/输出窗口语法:toutcleartoutshow:显示/隐藏TCL调试输出窗口语法:toutshow 0/1例子:toutshow 1#显示TCL调试/输出窗口tbind:为本机绑定一个动态IP地址语法:tbind ip地址[网卡索引]说明:网卡索引参数为可选,从0开始编号,编号顺序与“IP绑定”页面中的顺序一致,缺省为0号网卡例子:tbind 10.0.0.1#绑定一个动态IP地址'10.0.0.1'到本机的0号网卡tunbind:为本机去除一个动态绑定的IP地址语法:tunbind ip地址返回值:去除成功返回0,去除失败返回-1例子:tunbind 10.0.0.1#去绑定一个动态IP地址'10.0.0.1'tunbindall:去除所有的动态绑定的IP地址语法:tunbindalltping:ping一个指定的IP地址,并返回响应时间语法:tping IP地址[包长] [超时时间]说明:包长和超时时间为可选参数,缺省包长为32字节,超时时间为1秒返回参数:返回响应时间,单位为毫秒,如超时则返回-1 例子:set i [tping 10.0.0.1]#ping 10.0.0.1,并将返回的响应时间存在变量i当中trate:获取网卡速率语法:trate 代码代码取值为0~3:0:网卡实时接送速率1:网卡实时发送速率2:网卡平均接送速率3:网卡平均发送速率例子:set i [trate 0]#获取网卡的当前接送速率,并保存至变量i中tmail:Lotus Notes邮件发送命令语法:tmail ?-s sendto ??-c copyto ??-t Title ??-b body ??-a attachsendto:邮件收件人,如果有多个收件人,以逗号隔开,如:00118932,zhangshan,lisi copyto:邮件抄送人,如果有多个抄送人,以逗号隔开Title:邮件主题body:邮件内容attch:邮件附件文件的路径,如果有多个附件,以逗号隔开,注意:路径中的单斜杠"\"应该以双斜杠"\\"表示,如:C:\\boot.ini,d:\\test\\new0.tcl举例:tmail -s 00118932,zhaojinming -c 00118932 -t test -b "这是一个测试消息" -a "c:\\boot.ini" tmail -s "zhaojinming 36687/huawei@huawei, yuanwenbo 00118932/huawei@huawei " -c 00118932 -t 测试-b "这是一个测试消息" -a "c:\\boot.ini,d:\\test\\test.tcl"TCL窗口快捷键:F8:显示/隐含TCL调试输出窗口F9:开始/停止执行脚本F10:清空TCL脚本二、全局TCL命令tsend2 ?consolename ?commandline ??-r ??-s string1 [string2] ??-t timeout ??-nonewline负责向指定终端发送命令字符串。
Tcl脚本语言教程
![Tcl脚本语言教程](https://img.taocdn.com/s3/m/0a065eb9f01dc281e43af0cd.png)
T c l脚本语言教程(总37页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--Tcl教程TCL语法■脚本、命令和单词符号 (2)■置换(substitution) (2)■注释 (5)变量■简单变量 (5)■数组 (6)■相关命令 (6)表达式■操作数 (7)■运算符和优先级 (7)■数学函数 (8)List■list命令 (10)■concat命令 (10)■lindex命令 (11)■llength命令 (11)■linsert命令 (11)■lreplace命令 (11)■lrange 命令 (11)■lappend命令 (12)■lsearch 命令 (12)■lsort命令 (13)■split命令 (13)■join命令 (13)控制流■if命令 (13)■循环命令:while 、for、 foreach (14)■eval命令 (15)■source命令 (16)过程(procedure)■过程定义和返回值 (16)■局部变量和全局变量 (17)■缺省参数和可变个数参数 (17)■引用:upvar (18)字符串操作■format命令 (19)■scan命令 (20)■regexp命令■regsub命令■string命令文件访问■文件名■基本文件输入输出命令■随机文件访问■当前工作目录■文件操作和获取文件信息错误和异常■错误■从TCL脚本中产生错误■使用catch捕获错误■其他异常深入TCL■查询数组中的元素■info命令TCL语法 > 脚本、命令和单词符号一个TCL脚本可以包含一个或多个命令。
命令之间必须用换行符或分号隔开,下面的两个脚本都是合法的:set a 1 set b 2或set a 1;set b 2TCL的每一个命令包含一个或几个单词,第一个单词代表命令名,另外的单词则是这个命令的参数,单词之间必须用空格或TAB键隔开。
网络工程师调试工具IPOP使用手册
![网络工程师调试工具IPOP使用手册](https://img.taocdn.com/s3/m/f2267ef150e2524de5187e61.png)
IPOP 使用手册■文档编号请输入文档编号■密级请输入文档密级■版本编号V1.0■日期2014-10-08?2016科技■版权声明科本文中出现的任何文字叙述、文档格式、插图、照片、方法、过程等内容,除另有特别注明,版权均属技所有,受到有关产权及版权法保护。
任何个人、机构未经科技的书面授权许可,不得以任何方式复制或引用本文的任何片断。
■版本变更记录时间版本说明修改人2014-10-08 1.0初稿陈飞■适用性声明本模板用于撰写科技内外各种正式文件,包括技术手册、标书、白皮书、会议通知、公司制度等文档使用。
目录一 . 章标题 .................................................................................................................错误!未定义书签。
1.1一级小节标题 .................................................................................................错误!未定义书签。
1.1.1 二级小节标题 ..........................................................................................错误!未定义书签。
1.2标题与正文的样式名 .....................................................................................错误!未定义书签。
二 . 列表符号与列表编号 .........................................................................................错误!未定义书签。
TCL脚本语言1-32
![TCL脚本语言1-32](https://img.taocdn.com/s3/m/ecc0b04533687e21af45a994.png)
7
return $result }
#使用 while 循环来实现阶乘 proc Factorial2 {n} {
set result 1 set i 1 while {$i<=$n} {
set result [expr $result*$i] incr i } return $result }
puts "10! = [Factorial1 10]" puts "5! = [Factorial2 5]"
% set PI 3.1415926535897932 3.1415926535897932 % expr "cos($PI/4)*2" 1.41421356237 % expr "sqrt(2)" 1.41421356237
;#创建变量 PI ;#计算得到 sqrt(2) ;#直接计算得到 sqrt(2)
% set sum $r+$i 100+200 % set sum [expr $r+$i] 300 %
;#企图计算 r 和 i 两个变量的和,但是事与愿违; ;#只有这样才行
看看上面的例子就明白了,第一种方法计算 sum,结果 sum 的值是字符串“100+200”。 只有通过第二种方式,使用 expr 命令来计算表达式$r+$i,sum 的值才是我们期望的 300。在 TCL 中,所有的数学计算都是通过 expr 命令来实现的。例如通过计算正弦来得到 2 的平方 根:
;#输出所有的下标
可以看到,TCL 中的数组和我们 C 语言中熟悉的数组完全不是一回事,倒是和 VBScript 中的对象 Dictionary 非常的类似。TCL 中没有多维数组的概念,但是后面我们会讲到如何使 用多维数组。
tcl脚本语言(下)
![tcl脚本语言(下)](https://img.taocdn.com/s3/m/4e9bacdfce2f0066f53322a5.png)
TCL脚本语言
❖ 文件访问 ❖ 错误和异常 ❖ 查询数组中的元素 ❖ Info命令 ❖ 历史记录
文件访问
❖ 基本文件输入输出命令 open命令 语法:open name ?access? 功能:open命令以access方式打开文件name。返回
式的所有文件的列表。其中switches可以取下面的值:-nocomplain : 允许返回一个空串,没有-nocomplain时,如果结果是空的,就返回错误。 -- :表示switches结束,即后面以‘-’开头的参数将不作为switches。 注意:1、glob 还允许模式中包含‘ 括在花括号中间以逗号分开的多种选 择’ ; 2、如果glob的模式以一斜线结束,那将只匹配目录名 。 3、如果glob返回的文件名列表为空,通常会产生一个错误。但是glob 的在样式参数之前的第一个参数是“-nocomplain”的话,这时即使结果 为空,glob也不会产生错误 。
果命令中有varName就把该行赋给它,并返回该行 的字符数(文件尾返回-1),如果没有varName参 数,返回文件的下一行作为命令结果(如果到了文 件尾,就返回空字符串)。
文件访问
❖ 基本文件输入输出命令 read命令 语法1:read ?-nonewline? fileId 功能:读并返回fileId标识的文件中所有剩下的字节。
文件访问
❖ 文件操作和获取文件信息 file命令
file是有许多选项的常用命令,可以用来进 行文件操作也可以检索文件信息。
文件访问
❖ file命令 file atime name :返回一个十进制的字符串,表示文件name最
Vivado之TCL脚本语言基本语法介绍
![Vivado之TCL脚本语言基本语法介绍](https://img.taocdn.com/s3/m/ec216c8684254b35eefd3483.png)
Vivado之TCL脚本语言基本语法介绍TCL脚本语言Tcl(Tool Command Language)是一种很通用的脚本语言,它几乎在所有的平台上都可以解释运行,而且VIV ADO也提供了TCL命令行。
最近发现TCL脚本貌似比GUI下操作VIV ADO效率高一些,方便一些。
而且最近跟着官网文档做SDSOC的flatform,发现xilinx 官网的文档里都是用TCL命令来完成操作,于是决心学习一下TCL的语法。
应用程序(如VIV ADO)使用Tcl作为它的命令语言的好处:1 Tcl提供了标准语法,一旦用户掌握了Tcl就可以很容易的发布命令给基于Tcl的程序。
2 Tcl实现了很多的功能,使你的工作变得很方便。
3 TCl可作为程序间通信的接口。
命令格式一条Tcl的命令串包含了多条命令时,用换行符或分号来隔开而每一条命令包含了一个域的集合,域使用空白分开的,第一个域是一个命令的名字,其它的是作为参数来传给它数据类型Tcl只支持一种数据结构:字符串。
所有的命令、命令里的所有的参数、命令的结果、变量全部都是都是字符串。
简单实例:set i 123将123这个字符串赋值给i变量unset i清除变量set i hi将hi这个字符串赋值给i变量set i hi hellohi hello中有空格,所以加引号set i 123;#开始注释注意注释前,要先用分号,把命令结束掉,或者换行注释基本语法和基础命令在VIV ADO中的TCL命令行里,学习这些基本语法(Windows下》开始》所有程序》Xilinx Design Tools 》Vivado xxx 》Vivado xxx Tcl Shell)1》使用$符号引用变量其中puts是打印命令2》使用[]将命令返回值,作为新命令的参数set j 232命令会返回值232新命令就成了set i 232这里稍微复杂一点点的例子:set i a[set j b][set k c]最后的结果就是:j=b ; k=c ; i=abc3》数组数组不需要声明,直接赋值即可,也不必按照顺序来:set i(1)123 ; set i(16)hi当然也支持任意维数的数组:set i(1,2,3)hi引用的时候直接$i(1,2,3)即可parray命令可以打印出一个数组的全部信息:array命令命令格式:array opTIon arrayNameopTIon 是操作选项,有如下可选:name :返回数组的所有元素的名称size :返回数组的长度startsearch :初始化一次遍历,返回一个遍历标识符(searchId),这个searchId在下面用到,(是可以多个遍历同时进行的)下面的命令格式为:array opTIon arrayName searchId-》nextelement :返回数组中下一个元素,如果没有返回空-》anymore :如果接下来还有元素,返回1,否则返回0-》donesearch :结束遍历4》字符串命令string命令命令格式:string opTIon string1 string2option 是操作选项,有如下可选:compare :按照字母的排序方式比较,string1 《,=,》string2,分别返回-1,0,1 match :判断string1和string2是否匹配first :检索string2中第一次出现string1的位置,如果没有出现string1则返回-1last :和first相反trim :从string1中删除开头和结尾的,string2的字符命令格式:string option stringtolower :返回string中的所有字符被转换为小写字符后的新字符串toupper :返回string中的所有字符串转换为大写后的字符串trimleft :,去除string左空白,类似的还有trimrightlength :返回string1的长度range :string range abcdef 1 2,返回输出结果为bcappend命令字符串追加,可以无限拼接set i aappend i b c dputs $ii变量的值就成了abcd,注意append i b c d命令,而不是append $i b c dsplit命令除此之外,expr还能够识别一些函数及其返回值:abs(x)、round(x)、sin(x)、cos(x)等使用方法:expr 表达式6》list列表类似python中的列表,比如:{abc {def {jkl ccc}}}是一个有两个元素的列表abc和{def {jkl ccc}},Tcl中对list的命令有:(首先set l {abc {def {jkl ccc}}},下面实例中将对这个l列表进行操作)需要注意的是:大部分命令都是对$l进行处理,也把就是l的内容字符串取出来,再处理,并不会对l列表的内容造成影响需要注意的是lappend命令,lappend $l abcd是无效的,必须lappend l abcd才能实现列表内容的更新,而且是直接更改列表的内容7》proc自定义函数proc:proc hello {str} {puts hello:$str}需要注意的是,如果不能一行写完,那建议按照如下格式来定义(主要是要将{放到第一行的末尾):第一行:proc+(空格)+函数名+(空格)+{参数}+(空格)+{中间行:逻辑运算最后行:}全局变量global:用于将过程中的局部变量变成外界可操作的全局变量proc hello {} {global xset x hiset i hello}上述代码,执行结果:return命令:proc hello {} {return world}set i [hello]return命令没啥好说的,上述代码的结果是,将i变量赋值为world字符串8》流控制if 流控制这个同样建议按照格式来:第一行:if+(空格)+{表达式}+(空格)+{中间行:逻辑运算第N行:}+(空格)+else+(空格)+{中间行:逻辑运算最后行:}switch流控制例子如下,一目了然:switch 2 {1 {puts 111}2 {puts 222}3 {puts 333}default {puts xxx}}case流控制case abcd in a {puts 111} *bc* {puts 333} default {puts xxx}上述程序对字符串abcd进行判断:条件一:字符串为a条件二:不管字符串的前后字符是啥,只要中间有bc子字符串即可条件三:default9》循环控制foreach循环:假如想要将0,3,2,1按照顺序分别放到上述switch的判决条件(列表)里,输出四个结果,那就需要这个foreach了:foreach i {0 3 2 1} {switch $i {1 {puts 111}2 {puts 222}3 {puts 333}default {puts xxx}}}for循环:TCL的for循环也是很类似C语言的:for {set i 0} {$i 《10} {incr i} {puts $i}初始化i=0,范围i《10 ,循环i=i+1while循环:set i 10while {$i!=5} {puts $iincr i -1}运行的结果,自己就可以想象了10》字符串转为命令eval命令:set a set ; set b i ; set c hello ; eval $a $b $c上述代码就等效于:set i helloeval将字符串的内容,作为命令,执行11》打印输出之前的那个puts命令也是可以打印到命令行,但是,也只是能打印出来而已,而这个format 类似于C中的sprintf(用于格式化输出):format命令:format可以这样用:format %s %d hello 666set i [format %s %d hello 666]scan命令:说到format,刚好一起把scan说了,这两个命令可以看做是相反的一对,前者组合成字符串,后者把字符串拆分后赋值给变量scan 12.34.56.78 %d.%d.%d.%d a b c d将12.34.56.78拆分,并分别赋值给a b c d四个变量,命令返回赋值成功的变量的个数puts命令:puts当然也可以打印到文件中set f [open test.txt w]puts -nonewline $f hello\nputs $f worldclose $fputs -nonewline $f hello\n表示的是强制不换行打印,否则自动追加一个换行符文件系统基本常用操作:gets 》一次读一行文件puts 》写入文件open 》打开文件close 》关闭文件flush 》刷新缓冲区cd命令和shell中的cd一样pwd命令用于查看当前所在的目录open命令打开文件,返回文件描述符命令格式:open 文件名模式,支持6种模式,和其他编程语言中的文件IO,也是很相似的,模式如下:r 模式:打开只读文件(文件必须存在)r+ 模式:打开可读写文件[r+和a+模式可以类比]w 模式:打开只写文件,若文件存在则清空内容;若文件不存在则创建文件。