在Linux下連接openvpn 使用Python
本篇會分成以下幾個步驟
- 安裝openvpn
- 配置Ubuntu sudo NoPassWD
- 配置.ovpn檔案
- Coding
- 測試
一、安裝openvpn
沒什麼技術性,打開終端機直接輸入sudo apt install openvpn(ubuntu)
二、配置Ubuntu sudo NoPassWD
說明一下這步驟為什麼要配置,在command line 模式下若要連接openvpn,語法如下
sudo openvpn --config myopenvpn.ovpn
輸入完,終端機會要求你輸入密碼,這會造成我們在撰寫程式時的困擾,所以直接進入重頭戲,修改sudoers
你可以使用以下語法,預設使用vi來編輯
sudo visudo
或者你可以使用vim來編輯
export VISUAL=vim; visudo
我是使用vim來做編輯,按I進入編輯模式,在最下面添加一行
myusername ALL=(ALL) NOPASSWD:ALL
按esc,之後輸入:wq!來強制覆寫並離開
三、配置.ovpn檔案
我是使用Astrill這家Vpn服務商,直接進入後台下載檔案即可,解壓縮放到你想放的位置,為了節省麻煩我放在專案的目錄下
四、Coding
import subprocess
command = [“sudo”,”openvpn”,” — config”,”taiwan.ovpn”]
process = subprocess.Popen(command,stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE)
這邊備註一下subprocess.Popen 並不會堵塞父進程,詳細的資料請自行Google
五、測試
time.sleep(5)# 這裡是等待連接,由於不堵塞父進程所以需要等待一下
try:
ip = requests.get("https://myip.com.tw/")
print(re.search('\d+\.\d+\.\d+\.\d+', ip.text).group(0))
except:
print("Error")
#關閉所有vpn
os.system("sudo killall openvpn")
參考連結
using python expect to run openvpn
i need a python script to run open vpn automaticaly but i use sudo for run the open vpn sudo openvpn –cd /etc/openvpn…stackoverflow.com
i need a python script to run open vpn automaticaly but i use sudo for run the open vpn sudo openvpn –cd /etc/openvpn…stackoverflow.com