一、介绍
expect 是一个自动化交互套件,次要利用于执行命令和程序时,零碎以交互模式要求输出指定字符串,实现交互通信。
expect 主动交互流程:
- spawn 启动指定过程
- expect 获取指定关键字
- send 向指定程序发送指定字符
- 执行实现退出 eof
二、装置和命令
装置
yum install -y expect
常用命令
spawn 交互程序开始前面跟命令或者指定程序
expect 关键字匹配
send exp_send 发送指定的字符串信息
exp_continue 在 expect 中屡次匹配就须要用到
send_user 用来打印输出 相当于 shell 中的 echo
exit 退出 expect 脚本
eof expect 执行完结 退出
set 定义变量
puts 输入变量
set timeout 设置超时工夫
脚本执行
1)申明 expect
脚本结尾需申明
#!/usr/bin/expect
应用 expect xxx.sh 或者 ./xxx.sh 执行脚本
2)申明 bash
仍应用 bash 申明
#!/bin/bash
将 expect 命令局部包起来
/usr/bin/expect <<-EOF
xxxxx....
EOF
应用 sh xxx.sh 或者 ./xxx.sh 执行脚本
三、示例
近程登录主机
简略版本
#!/usr/bin/expect
spawn ssh [email protected] # spawn 前面跟要执行的命令
expect "password" # expect 后跟关键字,匹配下面命令执行后呈现的提醒字符串
send "123456\n" # 最初须要一个换行符 \r 或者 \n
expect eof # 表明完结(必要)
多命令匹配
#!/usr/bin/expect
spawn ssh [email protected]
expect {"yes/no" { send "yes\r"; exp_continue}
"password:" {send "$passwd\r"}
}
expect eof
参考文章:
Linux expect 介绍和用法一