7

我在编写脚本时遇到了一些麻烦,该脚本将启动我的 forticlient vpn 命令行客户端并在出现提示时发送我的密码。这是我的代码:

#!/usr/bin/expect -f
set loadme "./forticlientsslvpncli --server myvpnserver --vpnuser theuser
eval spawn $loadme
expect "Password for VPN: "
send "password\r"

但是,它仍然提示输入 vpn 密码。我相信这很简单,而且我对 linux 脚本很陌生,但任何帮助都将不胜感激!

谢谢!

4

4 回答 4

16
#!/usr/bin/expect -f
set timeout -1
cd /usr/local/forticlientsslvpn
spawn ./forticlientsslvpn_cli --server myhost:10443 --vpnuser myuser
expect "Password for VPN:" {send -- "mypassword\r"}
expect "to this server? (Y/N)\r" {send -- "y\r"}

expect eof
于 2013-10-13T18:30:58.660 回答
3

从我从格伦杰克曼那里得到的评论中,我发现密码提示不匹配。我将第一行更改为#!/var/bin/expect -d 提供必要的调试输出以找出问题并修复它。

谢谢格伦!

于 2013-06-21T13:16:41.390 回答
0

您的代码语法可能是错误的,或者给定的密码可能是错误的。所以你可以在期望提示符下试一试——逐行调试它。

于 2013-06-21T12:10:02.303 回答
0

您可以使用forticlientsslvpn_cliExpect输入密码。

此处提供完整的解决方案:

https://gist.github.com/azizasm/e216bc47b54f5b68405f3c8f8b832e8a

注意:如果 VPN 断开连接,此解决方案将自动重新连接。

于 2017-10-17T07:11:58.347 回答