我有开放连接VPN并且希望始终保持连接,甚至在我用自己的帐户登录之前。
我有 Ubuntu 16.04.2 network-manager-openconnect-gnome
。
如果我运行命令行,nmcli con up id <VPN connection name>
它会工作,但它要求用户名在弹出窗口中,即使它记得我的用户名以可见的文本;然后它要求密码,甚至它也记得它(带有项目符号),所以我不能nmcli
直接使用它来完成我想要的。
当然,我仍然不知道如何让它完全无头(我的意思是在我登录 Ubuntu 之前运行它),但这是我可以创建一些东西来连接之后的下一个问题打开连接VPN不用问我用户名和密码。
答案1
好吧,经过尝试和错误之后我没有找到直接的解决方案,但有一个解决方法是使用 expect 来实现这一点。
基本上,我编写了一个 expect 脚本来将用户名和密码发送到 nmcli。具体来说,
sudo apt-get install expect
,这将安装 expect 包创建一个文件,并调用它
connectvpn.sh
#!/usr/bin/expect -f spawn nmcli -a con up id <VPN ID> expect "Username:" send "<username>\r" expect "Password:" send "<password>\r" expect "$ "
chmod a+x connectvpn.sh
- 现在运行它,它将工作
当然缺点是用户名和密码将以纯文本形式保存在脚本中,但这是我能找到的最佳解决方案。