自动获取google动态验证码

210 阅读1分钟

在开发过程中,经常需要登录到线上服务器查看服务信息。

ssh root@ip地址
输入 google动态码,
google动态码 每次都需要用手机查看

这种方法太麻烦了。每次登录,所以写了个脚本自动获取google动态验证码。

1、准备工具

安装 GoldenPassport,选择添加验证,添加验证需要对应的二维码,可以从自己的手机上截图上传,安装完成后就可以在这里实时的看到google动态验证码了,但是每次连接服务器还是需要拷贝一下验证码,我们希望 ssh root@ip地址 后能够自动获取验证码,这就需要我们开启GoldenPassport 的Http服务了。

image.png

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]}