一、什么是expect?
expect是自动应答命令用于交互式命令的自动执行
spawn是expect中的监控程序,其运行后会监控命令提出的交互问题
send 发送问题答案给交互命令
“\r" 表示回车
exp_continue 表示当问题不存在时继续回答下面的问题
expect eof 表示问题回答完毕退出expect环境
interact 表示问题回答完毕留在交互界面
set NAME [ lindex $argv n ] 定义变量
二、expect语句格式
编写ask.sh脚本
【#!/bin/bash
read -p "What is your name: " NAME
read -p "How old are you:" AGE
echo $NAME is $AGE\'s old 】
【#!/bin/bash
expect <<EOF
spawn ask.sh
expect {
"name(关键字)" {send "chen\r"; exp_continue}
"old" {send "18\r";exp_continue}
}
expect eof
EOF
三、expect的用法
由于我们当前已经不在shell环境里面,所有shell的语句等我们不能使用
四、简单练习
通过编写脚本,要求连接主机时,直接在脚本$1 $2输入自己想要连接的ip和密码,就可以直接连接成功。(还有主机名)
编写脚本
五、
拓展一
在上面的练习的基础上,我们进行拓展
我们都是在expect的环境中进行,但是如何使用shell环境来编写expect脚本
并且,在练习题目 的基础上,我们同时连接多台主机并且查询哪一台主机是开机状态,并将主机名放到固定文件(这个可以做成高速缓存dns)
拓展二
我们假设我们所要连接的主机的密码都一样(在上面拓展一的基础上),当我们连接主机时,给他们的主机里面建立用户并设定密码。
(https://mp.csdn.net/mdeditor/100019473#在这个博客里里面,有普通脚本写出来,这次我们利用expect来写脚本)