Shell中的自动应答命令(expect)

文章目录

    • 一、什么是expect?
    • 二、expect语句格式
    • 三、expect的用法
    • 四、简单练习
    • 五、
      • 拓展一
      • 拓展二

一、什么是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  <

Shell中的自动应答命令(expect)_第1张图片

三、expect的用法

由于我们当前已经不在shell环境里面,所有shell的语句等我们不能使用
Shell中的自动应答命令(expect)_第2张图片Shell中的自动应答命令(expect)_第3张图片Shell中的自动应答命令(expect)_第4张图片Shell中的自动应答命令(expect)_第5张图片Shell中的自动应答命令(expect)_第6张图片Shell中的自动应答命令(expect)_第7张图片Shell中的自动应答命令(expect)_第8张图片

四、简单练习

通过编写脚本,要求连接主机时,直接在脚本$1 $2输入自己想要连接的ip和密码,就可以直接连接成功。(还有主机名)
编写脚本
Shell中的自动应答命令(expect)_第9张图片
Shell中的自动应答命令(expect)_第10张图片
Shell中的自动应答命令(expect)_第11张图片

Shell中的自动应答命令(expect)_第12张图片

五、

拓展一

在上面的练习的基础上,我们进行拓展
我们都是在expect的环境中进行,但是如何使用shell环境来编写expect脚本
并且,在练习题目 的基础上,我们同时连接多台主机并且查询哪一台主机是开机状态,并将主机名放到固定文件(这个可以做成高速缓存dns)
Shell中的自动应答命令(expect)_第13张图片
Shell中的自动应答命令(expect)_第14张图片
Shell中的自动应答命令(expect)_第15张图片
Shell中的自动应答命令(expect)_第16张图片Shell中的自动应答命令(expect)_第17张图片

拓展二

我们假设我们所要连接的主机的密码都一样(在上面拓展一的基础上),当我们连接主机时,给他们的主机里面建立用户并设定密码。
(https://mp.csdn.net/mdeditor/100019473#在这个博客里里面,有普通脚本写出来,这次我们利用expect来写脚本)
Shell中的自动应答命令(expect)_第18张图片

Shell中的自动应答命令(expect)_第19张图片

你可能感兴趣的:(shell)