背景:工作中各种线上机器的登陆脚本,有的还要需要先登录跳板机再登陆线上机器,有的还有动态口令,每次输入起来都很麻烦,使用自动化登陆脚本来管理太方便不过啦~
原理:shell调用expect来远程登陆
login.sh
#!/usr/bin/env bash
relay_name="$relay_name"
relay_password="$relay_password"
relay_host="xxx"
token=$1
echo "输入对应编号回车!"
select server in "server01" "server02" "server03"
do
break
done
expect -c "
set timeout -1
puts $server
spawn ssh $relay_name@$relay_host
set timeout 1
expect -re \"*Password*\" {send \"$password\r\"}
send \"ssh $server\r\"
interact
"
将脚本设置可执行,并添加到环境,以后就可直接调用了~
ps:设置一下长连接,每天只需登陆一次
在 ~/.ssh/config 中加入以下内容,如果没有这个文件就touch一个,权限需要600才可以生效
Host *
ControlPersist yes
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p
Compression yes