Zihao

Make small but daily progress

0%

Mac中使用expect和ga-cmd解决谷歌验证码登陆跳转机

在公司的时候,需要使用跳板机和二次验证Google Authenticator中的动态令牌。但是作为开发每次重复输入的需求,都会找到最优的解决方案。expect命令可以实现自动交互式任务,自动2步登录。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
## 安装expect
brew install expect

## 安装gacmd
$ git clone https://github.com/arcanericky/ga-cmd.git
$ git submodule init
$ git submodule update

$ cd ga-cmd/src

## 获取跳板机
$ vim .google_authenticator
$ ./build.sh <16 character seed>

## 检测一下

$ ga-cmd/src/bin/ga-cmd
123456

## 编写 expect 脚本
#!/usr/bin/expect
set host [lindex $argv 0]
set VERIFICATION [lindex $argv 1]
set TERMSERV 192.2.1.2
set USER yaozihao
set PASSWORD 123456
set UATUN yaozihao
#set UATPWD 内服务器密码

# 登录跳板机
spawn ssh -l $USER $TERMSERV
expect {

“*erificati*” {send “$VERIFICATION\r”;exp_continue;}
# “yes/no” {send “yes\r”;exp_continue;}
“*assword:*” { send “$PASSWORD\r”;}
}
# 登录内网
expect “$USER@*” {send “ssh -l $UATUN $host\r”}
#expect {
# “yes/no” {send “yes\r”;exp_continue;}
# “*password:*” { send “$UATPWD\r” }
# }
interact

## 编写自动登陆脚本
vim ~/test_expect.sh

#!/bin/bash
verification=$(/wwwroot/lib/ga-cmd/src/bin/ga-cmd)
echo $verification
/Users/yaozihao/expect.ecp 10.66.1.1 $verification
exit 0

## 执行测试一下
~/test_expect.sh
  • 本文作者: Zihao Yao
  • 本文链接: https://yaozihao.com/mac_expect_gacmd/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

欢迎关注我的其它发布渠道