在开发过程中,经常需要登录到线上服务器查看服务信息。
ssh root@ip地址
输入 google动态码,
google动态码 每次都需要用手机查看
这种方法太麻烦了。每次登录,所以写了个脚本自动获取google动态验证码。
1、准备工具
安装 GoldenPassport,选择添加验证,添加验证需要对应的二维码,可以从自己的手机上截图上传,安装完成后就可以在这里实时的看到google动态验证码了,但是每次连接服务器还是需要拷贝一下验证码,我们希望 ssh root@ip地址 后能够自动获取验证码,这就需要我们开启GoldenPassport 的Http服务了。
2、在 /Users/xinput/github/shell 目录下创建 gw.sh 文件
#!/bin/sh
export LC_CTYPE="en_US.UTF-8"
code=$(curl -s -XGET 'http://localhost:17304/code/xinput')
echo $code
expect -c "
# 使用 spawn 启动一个新的进程
spawn ssh gw1
set timeout 3
expect \"XXX google auth:\"
set pwd $code
# send 向进程发送字符串, \r 表示回车
send \"\$pwd\r\"
# interact 允许用户交互
interact
"
- http://localhost:17304/code/xinput 是 GoldenPassport 本地浏览器访问接口
- xinput 是 浏览器中显示的名字
- expect "XXX google auth:" 是执行 spawn ssh gw1 后待输入动态码的部分
3、保存上述文件后,替换文件名称
mv gw.sh gw
4、将 /Users/xinput/github/shell 环境加入到配置环境中,在 ~/.bash_profile 文件中添加以下内容
SHELL_HOME=/Users/xinput/github/shell
export PATH=$PATH:$SHELL_HOME
5、配置生效
source ~/.bash_profile
6、进入跳板机服务器
sh gw
二、跳板机进服务器
1、服务器比较分散,又多
#!/bin/bash
hostname=("168.xx.xx.1" "168.xx.xx.2" "168.xx.xx.3")
echo "物理机地址:"
min=0
max=${#hostname[*]}
echo "num" "host"
for(( i=$min; i<$max; i++)) do
echo $i: ${hostname[i]};
done;
num=-1
while [ $num -lt $min -o $num -ge $max ]
do
read -p "请输入你需要连接的物理机对应的 num: " num
if [ -z $num ];then #判断用户是否输入
num=0
fi
result=`echo $num|sed 's/[0-9]//g'`
if [ ! -z $result ]; then
num=-3
fi
done
echo "num: $num 对应的物理机: ${hostname[$num]}"
ssh ${hostname[$num]}