指定 VPN 连接的用户名和密码

指定 VPN 连接的用户名和密码

我有开放连接VPN并且希望始终保持连接,甚至在我用自己的帐户登录之前。

我有 Ubuntu 16.04.2 network-manager-openconnect-gnome

如果我运行命令行,nmcli con up id <VPN connection name>它会工作,但它要求用户名在弹出窗口中,即使它记得我的用户名以可见的文本;然后它要求密码,甚至它也记得它(带有项目符号),所以我不能nmcli直接使用它来完成我想要的。

当然,我仍然不知道如何让它完全无头(我的意思是在我登录 Ubuntu 之前运行它),但这是我可以创建一些东西来连接之后的下一个问题打开连接VPN不用问我用户名密码

答案1

好吧,经过尝试和错误之后我没有找到直接的解决方案,但有一个解决方法是使用 expect 来实现这一点。

基本上,我编写了一个 expect 脚本来将用户名和密码发送到 nmcli。具体来说,

  1. sudo apt-get install expect,这将安装 expect 包
  2. 创建一个文件,并调用它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 "$ "
    
  3. chmod a+x connectvpn.sh

  4. 现在运行它,它将工作

当然缺点是用户名和密码将以纯文本形式保存在脚本中,但这是我能找到的最佳解决方案。

相关内容