expect简易教程

expect命令是用于处理交互的。在实际应用中,我们可以将一些交互场景写在脚本上,达到自动化的目的。

下面先从一个例子入门。下面脚本主要功能是:远程登陆192.168.1.1->连接mysql->切换数据库->设置不自动提交。

#!/usr/bin/expect
spawn ssh -p 32200 192.168.1.1
send "mysql -uroot -p123456\r"
expect "mysql> "
send "use test\r"
send "set session autocommit=0;\r"
expect "mysql> "
interact

有兴趣的话,可以将上述代码保存到一个可执行文件中,并使用expect file.exp的方式运行。

指令介绍:expect常用的指令分别有:spawn、send、expect、interact、set。

spawn:  用于启动一个新的进程。

​​​​​​​命令格式:spawn [spawn-args] program [program-args]

​​​​​​​通常我们要通过spawn打开一个交互进程,如:ssh、ftp、scp之类,后面再通过send、expect命令与之交互。

send:

命令格式:send [-flags] string

通过send指令向进程发送一个字符串。如:send "uname\r",向进程发送uname命令,要注意后面的"\r"表示回车的意思。

expect:

命令格式:expect [[-opts] pat1 body1] ... [-opts] patn [bodyn]
举例:
expect {
  "a" {send "hello a\r"}
  "b" {send "exit\r"}
  -re "c|d" {send "use regex\r"}
}

expect通常用于等待进程返回字符串。 如:expect "hi\r"表示进程返回了hi的字符串,加上-re表示正则匹配。此外expect支持多分支模式,类似switch-case的方式。

interact:

表示允许用户交互,进程停留在命令行状态下,等待用户进行操作。

注意:通常expect脚本是以expect eof或interact结束。前者表示自动化任务结束。 

set:

主要用来设置环境变量。如set timeout 30表示等待30秒结束。

命令参数:$argv

expect脚本可以接受命令行传过来的参数 。如:expect my.exp 1 2 3,可以通过 [lindex $argv n],获得相应的参数(n=0,1,2.....)。

 

转载于:https://my.oschina.net/u/561917/blog/848064

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值