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