我有一个别名要连接到我的vpn,它是alias vpnc="printf 'usernamenpasswordn' | /opt/cisco/anyconnect/bin/vpn -s connect vpnhost.com"
当只有用户名和密码需要管道传输时,这很好。我还有一种情况,在输入密码后,我必须从我的Yubiky中输入一个令牌。也就是说,用户名和密码将被自动键入,bash命令应该等待令牌输入。我们该怎么做?
能否分享您如何管理脚本以等待令牌的完整解决方案。
以下是我如何解决的,我们在使用用户名和密码成功登录后会得到一个短信密码(答案(。
第一步是选择组(在这种情况下为0(,然后使用用户名和密码登录,然后等待密码以短信形式到达。然后输入并按enter。
#!/bin/bash
#Extract password from keychain
pw=$(security find-generic-password -a myusername -s profilename -w)
/usr/bin/expect -c '
set timeout 20
spawn "/opt/cisco/anyconnect/bin/vpn"
expect "VPN>" { send "connect vpn.contoso.comn" }
expect "*roup*" { send "0r" }
expect "*sername*" { send "myusernamer" }
expect "*assword*" { send "'${pw}'r" }
expect "*nswer*" { interact -o "r" exp_continue }
expect "state: Connected" { send "exitr" }
interact
'