一、介绍

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 介绍和用法一