使用 python 脚本启动 vpn

Launch vpn with python script

我需要能够在 python 脚本中打开我的 vpn 然后终止它。手动操作非常容易(请参见下面 link 中的图片),但我不知道如何编码。我听说过 subprocess.Popen 但不确定我是否走在正确的轨道上。

manual way of turning on my vpn

我正在使用 Ubuntu 16.04,我的 VPN 是 TrustZone。

感谢您的帮助。

查尔斯

从该屏幕截图中发现,您的 VPN 似乎是使用 NetworkManager 配置的。在这种情况下,以下命令将启动和停止您的 VPN:

import os

os.system('nmcli c up <VPN_NAME>')    # Start the VPN
os.system('nmcli c down <VPN_NAME>')  # Stop the VPN

您可以从解释器 here, and on using NetworkManager commands here 中找到有关 运行 系统命令的更多信息。

我一直在做类似的事情,它在 Debian 上的 python 和 Ubuntu 上工作得很好,它依赖于 openvpn 因此,请确保使用以下命令在您的计算机中安装 openvpn:

Sudo apt-get update
Sudo apt-get install openvpn

然后你可以使用这个 python 代码 (vpn.py) 的小和平到 运行 vpn 确保你使用 sudo 并且在 运行 它之前使用chmod 777 在文件上。 在您的情况下,您使用的是 trustzone,确保生成扩展名为 .ovpn

的配置文件

https://trust.zone/setup/ubuntu/ovpn/za

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    import requests, os, sys, subprocess, time
    path = '/home/user/Download/trustedzone.ovpn'
    with open("/home/user/Download/trustedzone.ovpn", "a") as myfile:
        myfile.write('\nscript-security 2\nup /etc/openvpn/update-resolv-conf\ndown /etc/openvpn/update-resolv-conf')
        myfile.close()
x = subprocess.Popen(['sudo', 'openvpn', '--auth-nocache', '--config', path])
    try:
        while True:
            time.sleep(600)
    # termination with Ctrl+C
    except:
        try:
            x.kill()
        except:
            pass
        while x.poll() != 0:
            time.sleep(1)

将脚本放在你想要的地方运行然后使用命令

Sudo chmod 777 vpn.py

启动vpn客户端运行

Sudo ./vpn.py

希望对你有用,祝你旅途愉快。