expect 交互

expect 是一个交互语言,用来实现自动和交互式任务进行通信,无需人的手工干预
例如密码交互

expect 通过 spawn 启动进程 -》 expect 获取期待关键字 -》 send 向进程发送字符串

下面是一个简单的交互案例
 1 #!/usr/bin/expect -re
 2 set timeout -1 
 3 set USERNAME %(userName)s
 4 set PASSWORD %(password)s
 5 
 6 spawn %(svn_commend)s
 7 
 8 expect {
 9  -re "sername" {exp_send "$USERNAME\r"; exp_continue}
10  -re "yes/no" {exp_send "no\r"; }
11  -re "Password for" {exp_send "$PASSWORD\r"; exp_continue}
12 }
13 expect eof 
14 exit
1. #!/usr/bin/expect -re
告诉操作系统脚本里的代码使用那一个shell来执
-re 表示启用正则表达匹配

2. set timeout -1
设置超时时长 -1 代表永不过期

3. exp_continue
表示循环匹配。匹配到改关键字后继续从头开始匹配。例如安装软件时需要输入多个 yes

4. expect eof
匹配结尾 例如执行命令结束时则可以匹配到 eof

5. exit、interact
exit交互结束退出。 interact表示执行完后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了

6. exp_send/send
都是想程序发送字符串,有啥区别还没找到
7. send_user
send_user 命令用来把后面的参数输出到标准输出中去,默人的send、exp_send 命令都是将参数输出到程序中去的,
8.如何使用
mac 上直接使用 ./XX.sh 执行上述脚本不行。需要使用 expect XX.sh 才能正确执行

9.调试
expect -d XX.sh输出每次执行的过程可以用于编写脚本时调试之用





猜你喜欢

转载自www.cnblogs.com/jiyihuizhongxing/p/9143678.html