TCL/EXPECT自动化测试脚本实例一 --- telnet到目标机器
2006-05-30 09:32
281 查看
从今天开始,陆续把我所写的一些自动测试脚本贴上来,希望对初学者有所帮助。由于目前没有找好合适的服务器存放代码,所以代码先贴在blog的正文中,以后再提供完整的代码下载。
我的自动化测试脚本运行在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} {
global g_prompt g_usrPrompt g_pwdPrompt
spawn telnet $ipaddr
expect {
"$g_usrPrompt" {
exp_send "$user/r/n"
exp_continue
}
"$g_pwdPrompt" {
exp_send "$passwd/r/n"
exp_continue
}
-ex "$g_prompt" {
dbgLog "Login Successful/n"
return $spawn_id
}
timeout {
send_user "timeout"
return 0
}
}
}
我的自动化测试脚本运行在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} {
global g_prompt g_usrPrompt g_pwdPrompt
spawn telnet $ipaddr
expect {
"$g_usrPrompt" {
exp_send "$user/r/n"
exp_continue
}
"$g_pwdPrompt" {
exp_send "$passwd/r/n"
exp_continue
}
-ex "$g_prompt" {
dbgLog "Login Successful/n"
return $spawn_id
}
timeout {
send_user "timeout"
return 0
}
}
}
相关文章推荐
- linux/unix/mac 下通过expect/tcl 脚本透过跳板机一键登录目标机器
- bash应用实例--交互式进程(如telnet)的自动处理脚本
- ssh远程到目标机器执行命令shell脚本
- Shell 脚本自动Telnet 并执行远端机器的脚本
- kubernetes要实现的目标——随机关掉一台机器,看你的服务能否正常;减少的应用实例能否自动迁移并恢复到其他节点;服务能否随着流量进行自动伸缩
- shell脚本消耗机器的CPU实例
- Shell 脚本自动Telnet 并执行远端机器的脚本
- 脚本实现telnet检测指定机器端口的连通性
- py3.5 telnet的实例(在远程机器上批量创建用户)
- Shell脚本自动Telnet并执行远端机器的脚本
- [SqlException (0x80131904): 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。……(provider: TCP 提供程序, error: 0 - 由于目标机器积极拒绝,无法连接。)]
- 远程开启/关闭目标telnet服务的windows脚本RTCS.vbs
- shell脚本ssh到其它机器上执行命令
- shell脚本实例-交叉证认
- 用shell脚本监控进程是否存在 不存在则启动的实例
- PHP处理SQL脚本文件导入到MySQL的代码实例
- Java和Groovy脚本互相调用实例
- Linux Shell经典实例解析--Oracle启动脚本(上)
- SQL Server中使用Trigger监控存储过程更改脚本实例
- Shell脚本防攻击的方法与实例