Shell中的自动应答命令(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  <<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来写脚本)
在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值