背景
公司的服务器需要先连接vpn然后登陆跳板机,才能从跳板机登陆公司内网的服务器。每次从iterm上远程连公司内网的服务器都先需要登陆跳板机再通过跳板机登陆,太麻烦,有没有更简便的方法呢,有的!可以在iterm中配置expect脚本实现。
配置脚本
-
将下面脚本保存为login.exp,存在/usr/local/bin目录下面,修改文件权限777
chmod 777 login.exp
。 -
注意下面脚本中跳板机ip需要修改为真实的跳板机ip,用户名修改为你的用户名。
#!/usr/bin/expect
# 参数1:远程host;参数2:远程password
if { $argc != 2 } {
send_user "Usage: host password\n"
exit
}
set host [lindex $argv 0]
set pw [lindex $argv 1]
set TERMSERV 跳板机ip
set USER 用户名
# Start the session
catch {spawn ssh $USER@$TERMSERV} # 登录跳板机
# Login
expect "*assword:*" { send "$pw\r" }
#通过跳板机登录线上机器
expect "*login1.ops.bj2.baidu.com*" { send "ssh $USER@$host\r" }
expect {
"(yes/no)?"
{send "yes\n";exp_continue}
"*assword:*"
{send "$pw\n"}
}
expect "*$host*" { send "cd ~\r"; }
interact
配置iterm profiles
- 配置iterm profiles,如下图所示。
- 别忘了图片中login.exp 后面填写正确的用户名、密码两个参数。
大功告成
下次登录服务器就可以直接从profile中选择了,是不是非常方便。
您的打赏是对我最大的鼓励!