最近搞灰度发布,机器太多了,四个国家,每个国家两台机器,启停应用很费时间,所有打算写个shell脚本来提高效率(偷懒~)
使用expect可以不用输入密码,避免重复劳动。
那什么是expect?
查了一下,expect是一个免费的编程工具,用来实现自动的交互式任务,而无需人为干预。说白了,expect就是一套用来实现自动交互功能的软件。
在实际工作中,我们运行命令、脚本或程序时,这些命令、脚本或程序都需要从终端输入某些继续运行的指令,而这些输入都需要人为的手工进行。而利用expect,则可以根据程序的提示,模拟标准输入提供给程序,从而实现自动化交互执行。这就是expect!!!真的很好用。
先安装expect
yum install -y expect
touch test.sh
chmod 755 test.sh
使用expect时发现执行脚本的时候不能使用sh test.sh
应该用 ./test.sh,因为expect不是bash
ssh
正常是使用 ssh uk@mvno-b-app-07 “sh /data/uk/script/start-job.sh”
然后还需要输密码等操作
expect + ssh
#!/usr/bin/expect
set timeout 3
spawn ssh uk@mvno-b-app-07 "sh /data/uk/script/start-job.sh"
expect {
"*yes/no" {send "y