使用python脚本启动vpn

时间:2018-02-12 20:15:03

标签: python-3.x vpn

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

manual way of turning on my vpn

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

感谢您的帮助。

查尔斯

2 个答案:

答案 0 :(得分:0)

从该屏幕截图中进行疯狂搜索,您的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以及使用NetworkManager命令here找到有关运行系统命令的更多信息。

答案 1 :(得分:0)

我一直在做类似的东西,它在Debian和Ubuntu上使用python工作正常,它依赖于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

希望它对你有用,有一个美好的旅程。