expect 自动应答命令(智能化应答问题)

expect是自动应答命令,用于交互式命令的自动执行
spawn是expect中的监控程序,其运行后会监控命令提出的交互问题
send发送问题给交互命令
“\r”表示回车
exp_continue标示当问题不存在时继续回答下面的问题
expect eof标示问题回答完毕退出expect环境
interact标示问题回答完毕依然保留交互界面 (ssh登陆时需要使用)
set NAME[ lindex $argv n ]定义变量,NAME是占为符

一、传统一问一答模式
例:使用read实现交互式命令应答

	vim ask.sh #编写read问题文件

在这里插入图片描述
执行sak.sh文件,需要输入
在这里插入图片描述
二、自动应答模式的提出及自动应答
简单自动应答,将已知结果写入脚本
vim /mnt/answers.sh #编写问题回答文件
在这里插入图片描述
sh /mnt/answers.sh #执行应答文件,应答成功,省略read交互命令,直接给出结果

在这里插入图片描述
缺点:当去掉其中一个问题时,自动应答发生错乱

在这里插入图片描述在这里插入图片描述
解决方式:
自动应答器expect

yum install expect -y  #安装应答服务

在这里插入图片描述

vim answer.exp #编写/mnt/ask.sh文件的自动应答文件

在这里插入图片描述
执行自动应答文件:

expect answer.exp

在这里插入图片描述
注意:
【1】
ask.sh文件中若问题不存在,使用exp_continue不影响其他问题回答

vim ask.sh  #编辑问题文件

在这里插入图片描述

vim answer.exp
在这里插入图片描述
expect answer.exp #执行应答文件answer.exp

在这里插入图片描述
【2】
expect回答问题的顺序可随意

vim answer.exp

在这里插入图片描述
#应答正常执行

expect answer.exp  #执行

在这里插入图片描述
【3】
应答继续标志exp_continue,必须在最后一个问题之前都加上,才能保证应答正常进行
例:若继续标志加到前面问题上

	vim answer.exp

在这里插入图片描述
#无法执行下去

    expect answer.exp

在这里插入图片描述

三、智能化应答
方式:执行answer.exp脚本+问题回答,自动给出结果
优点:可根据需要输出自己给出的各种问题回答
【1】expect eof执行完后自动退出

vim /mnt/answer.exp

在这里插入图片描述
测试:

expect answer.exp ly 18 MATH happy
expect answer.sh zl 20 CHINESE happy

在这里插入图片描述
【2】interact应答完保留交互界面的使用
ssh服务

vim auto_ssh.exp

在这里插入图片描述
在这里插入图片描述
expect eof在ssh服务中的使用:
维持时间为timeout设置的时间,不能用来进行ssh服务交互
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值