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的主机