使用 anyconnect 从命令行进行连接

使用 anyconnect 从命令行进行连接

我正在尝试使用 Cisco anyconnect 3.1 从 Linux 命令行连接到服务器。我可以连接,但我必须一次提交一个参数。我想从将在另一个服务器中运行的脚本进行连接。我可以这样做吗?类似

vpn connect server_add group_name user_name passwd

答案1

假设/opt/cisco/anyconnect/bin/vpnagentd正在自动运行:

连接

printf 'USERNAME\nPASSWORD\ny' | /opt/cisco/anyconnect/bin/vpn -s connect HOST

替换USERNAMEPASSWORDHOST\ny最后的是接受登录横幅 - 这是特定于我的主机的。

请注意,这里使用的是单引号'而不是双引号"- 这是因为双引号会告诉 Bash 将字符串中的某些字符(例如感叹号)解释为 Bash 历史命令。如果密码包含感叹号,则双引号会导致此命令失败并出现“未找到事件”错误。单引号字符串会传递感叹号而不对其进行解释。

断开

/opt/cisco/anyconnect/bin/vpn disconnect

这是使用 AnyConnect v3.1.05160 测试的。

答案2

我在尝试从 Mac OS X 终端使用 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

(引号末梢血是为了防止在以下输入中扩展/替换命令/参数。)

出口最后就是退出Cisco vpn交互模式。

答案3

您可以将连接信息放在单独的文件中,例如

anyconnect.txt

connect [HOST]
[GROUP or 0 or 1]
[USER]
[PASSWORD]
y
exit

然后执行以下操作:

/opt/cisco/anyconnect/bin/vpn -s < anyconnect.txt

答案4

这是我在 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

*我知道这与上面 Peter S. 的回答类似。

相关内容