linux下shell脚本执⾏交互式操作命令—【expect】
很多情况下,为了开发⽅便,会写⼀些⼩⼯具辅助。下⾯简单分享下linux 下执⾏shell脚本时遇到交互式场景时的解决办法。
场景:linux 下ssh 登⼊远程服务器,需要⼿动输⼊password。
expect 命令
Expect 是由 Don Libes 基于 Tcl 语⾔开发的,并被⼴泛应⽤于交互式操作和⾃动化测试的场景之中,它尤其适⽤于需要对多台服务器执⾏相同操作的环境中,可以⼤幅度得提⾼系统管理⼈员的⼯作效率。
Send,expect 和 spwan 是 Expect 语⾔最基本的命令。其中,send 命令会发送字符串给指定进程(process); expect 命令会等待接受该进程返回的结果并且会根据返回的字符串来决定下⼀步的操作;⽽ spwan 命令可以发起⼀个进程的运⾏。
简单demo⽰例:
1、pect
2、pect
3、脚本代码
#!/usr/bin/expect
# 设置超时时间60s
set timeout 60
spawn ssh lilei -p 2222
expect {
"*yes/no*" {
send "yes\n";
exp_continue;
}
"*password:*" {
linux循环执行命令脚本
send "Welcome@2\r";
exp_continue;
}
}
#这⾥使⽤了 interact 命令,使执⾏完程序后,⽤户可以在 $host 终端进⾏交互操作。
interact
4、终端执⾏命令:pect
PS:linux 下 还有⼀种EOF语法,但不适⽤于这⾥。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。