Linux交互工具expect
2021/11/19 7:11:03
本文主要是介绍Linux交互工具expect,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
应用场景:一个终端shell脚本实现多台主机自动部署。无需人为干预。
expect是一个自动交互功能的工具。可以在主机切换时【即需要交互操作时】,利用expect,则可以根据程序的提示,模拟标准输入提供给程序,从而实现自动化交互执行。
实例:
PASSWD=xxx
for host in $@
do
CMD="ssh $host"
expect -c "
set timeout 20; #超时时间。默认10s。防止那些执行死机的命令的。一旦到了这个timeout,还是没有屏幕输出的话,expect脚本中下面的代码就会执行。
spawn $CMD
expect {
\"*yes/no*\" {send \"yes\r\"; exp_continue} #匹配到*yes/no*,输入yes
\"*password*\" {send \"${PASSWD}\r\";} #匹配到*password*,输入${PASSWD}
}
expect \"]#\"
send \"echo hello\r\";
send \"exit\r\";
expect eof"
done
执行结果如图:
附常用命令:
send 用于向进程发送字符串
expect 从进程接收字符串
spawn 启动新的进程
interact 允许用户交互【较少使用】
一般情况下使用spawn、send和expect命令就可以很好的完成我们的任务;但在一些特殊场合下还是需要使用interact命令的,interact命令主要用于退出自动化,进入人工交互。比如我们使用spawn、send和expect命令完成了ssh登陆主机,执行命令,但是我们希望在命令执行以后,仍然可以停留在ssh连接状态,以便手动的执行后续命令,此时使用interact命令就可以很好的完成这个任务。
实例:
PASSWD=xxx
for host in $@
do
CMD="ssh $host"
expect -c "
set timeout 20; #超时时间
spawn $CMD
expect {
\"*yes/no*\" {send \"yes\r\"; exp_continue}
\"*password*\" {send \"${PASSWD}\r\";}
}
expect \"]#\"
send \"echo hello\r\";
expect eof"
interact
done
执行结果如图:
这篇关于Linux交互工具expect的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-03-30[译]漫画SELinux概念
- 2024-03-29linux 移动文件
- 2024-03-28linux .so file
- 2024-03-28Linux 磁盘管理
- 2024-03-28Linux学习笔记(十三)磁盘管理(一):磁盘分区
- 2024-03-26linux 创建 文件
- 2024-03-25使用SecureCRT对Linux vim进行颜色设置
- 2024-03-202019-2020-12 20199317 《Linux内核原理与分析》 第十二周作业
- 2024-03-20Linux运维的第二周总结
- 2024-03-13how to count number of directories in linux