有时候,当我孤独地坐着等待生命大门关闭时,一种与世隔绝的感觉就会像冷雾一样笼罩着我。远处有光明、音乐和友谊,但我进不去,命运之神无情地挡住了大门。我真想义正词严地提出抗议,因为我的心仍然充满了热情。但是那些酸楚而无益的话语流溢在唇边,欲言又止,犹如泪水往肚里流,沉默浸透了我的灵魂。然后,希望之神微笑着走来对我轻轻耳语说:“忘我就是快乐。”因而我要把别人眼睛所看见的光明当作我的太阳,别人耳朵所听见的音乐当作我的乐曲,别人嘴角的微笑当作我的快乐。
TCL/EXPECT自动化测试脚本实例一 --- telnet到目标机器
上一篇 /
下一篇 2009-07-27 09:53:28
/ 个人分类:C语言
我的自动化测试脚本运行在debian linux下,使用/usr/bin/expect进行解释执行。为了简化处理,把一些常用的功能编写成函数,放在commonLib.exp文件中,其它脚本文件可以使用source commonLib.exp命令引用这些函数。 下面的函数完成telenet到目标机器并login。从其实现上大家可以看到tcl/expect编写测试脚本的简洁。 这个函数带有三个参数,分别是目标机器的IP地址ipaddr,登录用户名user和登录密码,telenet的端口号采用默认的23端口。 函数中使用了三个全局变量,g_prompt,g_usrPrompt和g_pwdPrompt,分别表示登录后的命令提示符,提示用户名输入的提示符,以及提示密码输入的提示符,这三个全局变量定义在global.exp中。之所以采用全局变量,是因为这些值使用比较广泛,但在不同设备中都不相同。使用全局变量可以方便修改。
代码如下:
#************************************************ 全部用#在开头标识,表示#不可执行部分 # telnet login routine # # @PARAMS 参数: # ipaddr - remote device ip address # user - user name to login in # passwd - login password # # @RETURN # spawn_id if login success, otherwise 0 #************************************************ proc login {ipaddr user passwd}{ proc add {x y } {expr $x+$y} proc命令的第一个参数是你要定义的过程的名字,第二个参数是过程的参数列表,参数之间用空格隔开,第三个参数是一个TCL脚本,代表过程体。 proc生成一个新的命令,可以象固有命令一样调用: global g_prompt g_usrPrompt g_pwdPrompt全局变量:分别表示登录后的命令提示符,提示用户名输入的提示符,以及提示密码输入的提示符, spawn telnet $ipaddr telnet 方式登陆到目标ip地址上 expect{ "$g_usrPrompt" { 提示输入用户名 exp_send "$user\r\n" 发送用户名 exp_continue 程序继续 } "$g_pwdPrompt" { 提示密码输入的提示符 exp_send "$passwd\r\n"发送密码 exp_continue 程序继续 } -ex "$g_prompt" { 登录后的命令提示符 exec 命令用于显式地执行外部命令 dbgLog "Login Successful\n"显示日志信息,登陆成功 return $spawn_id } timeout { 超时处理 send_user "timeout" 发送超时信息 return 0 习惯上 return (0); 表示程序运行正常,别的值表示不正常 在定义过程时,你可以利用return命令在任何地方返回你想要的值。 return命令迅速中断过程,并把它的参数作为过程的结果。 } }}
|
|
|
收藏
举报
TAG: