使用配置文件通过 openVPN 与 Python 连接
Connecting through openVPN with Python using config file
我正在尝试从另一个国家的计算机 运行 收集数据。使用 Linux 终端,我可以使用带有 .ovpn 文件的 openVPN 进行连接。但是,要进行自动 API 调用,我想使用 Python。
有没有办法通过 Python 连接并从 .opvn 文件中获取连接详细信息?有点类似于SSHForwarder。
像这样:
from openvpn_api import VPN
v = VPN('199.249.9.9', 1194)
with v.connection():
print(v.release)
非常感谢!
罗格
您可以通过 subprocess.run(args, stdout=PIPE, stderr=PIPE, universal_newlines=True)
从脚本中 运行 控制台命令。
Args 应该是这样的列表:['sudo', '/usr/local/sbin/openvpn', '--config', home + '/path/to/config.ovpn']
例如:
import subprocess, os
home = os.environ["HOME"]
args = [
'sudo',
'/Mike/local/sbin/openvpn',
'--config',
home + '/Mike/Downloads/office.ovpn'
]
r = subprocess.run(args, stdout=PIPE, stderr=PIPE, universal_newlines=True)
...
# your code which needs to be connected to openvpn
...
# kill connection
r.stdout
另一种(更简单的)方法是使用 subprocess.Popen():
import subprocess, psutil
# define function to kill connection
def kill(proc_pid):
process = psutil.Process(proc_pid)
for proc in process.children(recursive=True):
proc.kill()
process.kill()
# use shell command to connect openvpn
r = subprocess.Popen(shell_command, shell=True)
...
# your code
...
# kill connection
kill(r.pid)
我正在尝试从另一个国家的计算机 运行 收集数据。使用 Linux 终端,我可以使用带有 .ovpn 文件的 openVPN 进行连接。但是,要进行自动 API 调用,我想使用 Python。
有没有办法通过 Python 连接并从 .opvn 文件中获取连接详细信息?有点类似于SSHForwarder。
像这样:
from openvpn_api import VPN
v = VPN('199.249.9.9', 1194)
with v.connection():
print(v.release)
非常感谢!
罗格
您可以通过 subprocess.run(args, stdout=PIPE, stderr=PIPE, universal_newlines=True)
从脚本中 运行 控制台命令。
Args 应该是这样的列表:['sudo', '/usr/local/sbin/openvpn', '--config', home + '/path/to/config.ovpn']
例如:
import subprocess, os
home = os.environ["HOME"]
args = [
'sudo',
'/Mike/local/sbin/openvpn',
'--config',
home + '/Mike/Downloads/office.ovpn'
]
r = subprocess.run(args, stdout=PIPE, stderr=PIPE, universal_newlines=True)
...
# your code which needs to be connected to openvpn
...
# kill connection
r.stdout
另一种(更简单的)方法是使用 subprocess.Popen():
import subprocess, psutil
# define function to kill connection
def kill(proc_pid):
process = psutil.Process(proc_pid)
for proc in process.children(recursive=True):
proc.kill()
process.kill()
# use shell command to connect openvpn
r = subprocess.Popen(shell_command, shell=True)
...
# your code
...
# kill connection
kill(r.pid)