tcl自动保存结果expect_TCL中Expect 交互的学习小结

Expect作为一种重要的TCL扩展包,主要有以下几个命令:spawn用于启动一个进程,之后所有expect操作都在这个进程中进行。

如果没有装expect或者直接在默认的SHELL下执行是找不到spawn命 令的。所以不要用 “which spawn“之类的命令去找spawn命令。spawn ssh root@135.251.193.217

spawn telnet 135.251.193.217

2. expect & exp_sendexpect "password:"

exp_send "word\r"

也可以在一个expec中匹配多个关键字expect -re "password:" {  exp_send "word\r" }

-re "noresponse" {}

读到noresponse,会退出expect

3. 关于exp_send 和 send

exp_send可发送一些特殊符号 \r, \n, \t

4. 关于exp_continueexpect -re "password:" {  exp_send "word\r";exp_continue}

-re "noresponse" {}

exp_continue会使匹配第一个关键字后从头开始再匹配第二个关键字

5. exp_pid 用来获取当前spawn的id

6. set timeout 30

用以设置expec等待超时时间

7. close -id

杀死对应的spawn_id的进程。

8 interact

执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远程终端上。如果你只是登录过去执行

举例:脚本自动上传log#!/usr/bin/expect

spawn scp [lindex $argv 0] root@135.251.193.219:/home

expect "root@135.251.193.219's password:" {exp_send "123456\n"}

interact

把上面保存为expect_script#!/bin/bash

for f in `ls /log/*.log`

do

expect_script $f

done

再编写如上的bash脚本执行即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值