我正在尝试从Linux命令行使用Cisco anyconnect 3.1连接到服务器。我可以连接,但是我必须一次提交一个参数。我想从将在另一台服务器上运行的脚本进行连接。我可以那样做吗?就像是
vpn connect server_add group_name user_name passwd
我正在尝试从Linux命令行使用Cisco anyconnect 3.1连接到服务器。我可以连接,但是我必须一次提交一个参数。我想从将在另一台服务器上运行的脚本进行连接。我可以那样做吗?就像是
vpn connect server_add group_name user_name passwd
Answers:
假设/opt/cisco/anyconnect/bin/vpnagentd
正在自动运行,应为:
要连接:
printf 'USERNAME\nPASSWORD\ny' | /opt/cisco/anyconnect/bin/vpn -s connect HOST
替换USERNAME
,PASSWORD
和HOST
。将\ny
在年底是接受登录旗帜-这是针对我的主人。
注意单引号'
而不是双引号"
-这是因为双引号告诉Bash作为Bash历史命令来解释字符串中的某些字符,例如感叹号。如果密码包含感叹号,则双引号会使该命令失败,并显示“找不到事件”错误。单引号字符串不附带解释符而传递感叹号。
要断开连接:
/opt/cisco/anyconnect/bin/vpn disconnect
已使用AnyConnect v3.1.05160进行了测试。
Certificate is from an untrusted source
,而您仍要连接,则y
在上述方法中传递一个参数,以使连接命令变为:printf "y\nUSERNAME\nPASSWORD\ny" | /opt/cisco/anyconnect/bin/vpn -s connect HOST
。请注意,只有在您完全信任连接的情况下,才进行此操作。否则,可能会有中间人坐在那里偷窥您。
GROUPNAME\nUSERNAME\nPASSWORDy
。如果您想将密码与命令分开(可能是shell脚本或dotfile键绑定),则可以执行以下操作:cat ~/.anyconnect_credentials | /opt/cisco/anyconnect/bin/vpn -s connect HOST
>> notice: Please respond to banner. MYPASSWORD
我遇到了同样的困难,尝试从Mac OS X Terminal使用Cisco AnyConnect。要使Cisco vpn命令从标准输入中获取其输入,必须指定-s选项,该选项将Cisco vpn命令置于交互模式。然后,您可以提供以交互方式给出的响应。
您需要给出的响应取决于VPN服务器管理员如何配置服务器。对我来说,vpn互动提示是
Group:
Username:
Password:
Blah, blah, blah, ...
accept? :
所以我运行的命令是
$ /opt/cisco/anyconnect/bin/vpn -s connect vpn.example.com <<"EOF"
0
username
password
y
exit
EOF
(EOF周围的引号是为了防止在以下输入中使用命令/参数扩展/替换。)
最后的出口是退出Cisco vpn交互模式。
我喜欢简化命令行,因此在名为gotowork的shell脚本中使用了上述方法。如上所述,我需要提供组,用户名以及由专用PIN和RSA SecurID密码组成的密码。我不必回答上面的“接受?” 题。除了RSA密码外,所有内容都在脚本中,因此命令行为
$ gotowork <RSA passcode>
我必须以root身份运行。假定PIN为1234。脚本要点:
# put the interactive answers into a text file
echo -e "0\nusername\n1234$1\n" > /tmp/answers.txt
# find the path to the anyconnect executables
ciscopath="$(dirname $(find /opt/cisco -depth -name vpnagentd))"
# make sure the anyconnect daemon is running
[ $(pidof vpnagentd) ] || $ciscopath/vpnagentd
# connect
$ciscopath/vpn -s < /tmp/answers.txt connect remote.mycompany.com
使用anyconnect 3.1.05170。在Debian 6,LinuxMint 17上测试
0\n
必要?还是特定于您的公司?
0
,然后是一个换行符,\n
然后是用户名,然后是换行符\n
……
0
则表示“使用第一组”。
这就是我在OSX El Capitan上所做的工作。占位符被[方括号]包围。
启用
/opt/cisco/anyconnect/bin/vpn -s connect [HOST_ADDRESS] <<"EOF"
[VPN_USERNAME]
[VPN_PASSWORD]
y
EOF
禁用
/opt/cisco/anyconnect/bin/vpn disconnect
*我知道这与上述彼得·S的答案相似。
printf "y\n[GROUP]\n\n[PASSWORD]\ny\n" | /opt/cisco/anyconnect/bin/vpn -s connect HOST