48. Shell脚本中的expect的应用

Lesson48 Shell脚本中的expect的应用

1. expect语句的定义
expect 是自动应答命令,用于交互式命令的自动执行
spawn 是 expect 中的监控程序,其运行后会监控命令提出的交互问题
send发送问题答案给交互命令
"\r"表示回车
exp_continue 标示当问题不存在时继续回答下面的问题
expect eof 标示问题回答完毕退出 expect 环境
interact标示问题回答完毕留在交互界面
set NAME [ lindex $argv n ]定义变量
set timeout 表示定义等待时间
2. 编写一个提出多个问题的脚本,使用expect完成自动应答

编写一个提出问题的脚本ask.sh
在这里插入图片描述
脚本中写入的内容:提出问题,使用read交互式变量的方式获取用户输入的字符
在这里插入图片描述
执行脚本,输入问题的答案,即可看到问题与答案的组合输出的结果
在这里插入图片描述
切换到/mnt/下,可以看到有一个ask.sh和一个answer.sh文件
在这里插入图片描述
编辑回答问题的脚本文件
在这里插入图片描述
按顺序将问题的答案写好,执行此脚本时,会自动通过重定向将答案送到/mnt/ask.sh文件中
在这里插入图片描述
运行回答问题的脚本文件,可以看到,问题有正确输出
在这里插入图片描述
再次编辑提出问题的脚本文件ask.sh,注释掉一个问题
在这里插入图片描述
执行answer。sh脚本文件, 可以看到,再次调用回答问题的脚本时,会对应错乱,没有识别问题的有无
在这里插入图片描述
解决办法:编辑一个expect自动灵活回答问题的脚本

3. 编写一个auto_ssh脚本,使用expect完成自动应答远程连接172.25.254.1主机

首先需要安装这个expect插件
在这里插入图片描述
可以看到,安装完成
在这里插入图片描述
编写自动应答脚本文件auto_ssh.exp
在这里插入图片描述
在这里插入图片描述
给自动应答文本一个可执行权限
在这里插入图片描述
执行此脚本,在脚本名称后写上要登陆的主机ip和主机密码
在这里插入图片描述
可以看到,能够通过ssh自动登录172.25.254.1主机
set timeout 5 #设定执行时间为5秒
expect eof #设定等待时间为5秒,则五秒后自动退出脚本程序
在这里插入图片描述
在这里插入图片描述
可以看到,执行脚本程序连接172.25.254.15时,登录成功之后等待五秒,系统会自动退出172.254.25.15的主机

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值