我正在尝试使用 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
替换USERNAME
、PASSWORD
和HOST
。\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. 的回答类似。