亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

編寫Python腳本批量配置VPN的教程

系統 2803 0

緣起

大家都知道,最近的網絡不怎么和諧,速度慢不說,VPN 還總斷,好在云梯 提供了挺多的服務器可以切換, 但云梯的服務器又挺多,Linux 的 Network Manager 又不支持批量添加配置,甚至配置文件都不能復制新建, 每個服務器的配置都得手動加,非常麻煩。

當然,也可以每次切換時打開配置,光改地址,但是這也非常不方便。

作為一個合格的開發人員,當然會想到用程序批量生成配置,我選擇使用 Python。
尋找配置文件的位置

要批量創建配置,首先得知道配置文件在哪里,比如自己的云梯 VPN 地址中包含 example 字樣,這樣找起來就方便了。

復制代碼 代碼如下:
grep 'example'? ~/.config -r
grep 'example'? /etc/ -r

于是輕松的定位到了配置文件的位置

復制代碼 代碼如下:
grep: /etc/NetworkManager/system-connections/yunti.pptp.a: Permission denied
grep: /etc/NetworkManager/system-connections/yunti.pptp.b: Permission denied
grep: /etc/NetworkManager/system-connections/yunti.pptp.c: Permission denied

了解配置文件結構

拿一個配置文件出來看看:

            
[connection]
id=yunti.pptp.tw1
uuid=063db9b5-5915-4f3e-8bb4-2fe58abf5be5
type=vpn
permissions=user:greatghoul:;
autoconnect=false

[vpn]
service-type=org.freedesktop.NetworkManager.pptp
gateway=tw1.example.com
require-mppe=yes
user=greatghoul
refuse-chap=yes
refuse-eap=yes
password-flags=1
refuse-pap=yes

[ipv4]
method=auto
dns=8.8.8.8;8.8.4.4;
ignore-auto-dns=true


          

顯然,有這么幾個部分需要動態生成的

  • ??? connection.id 這個需要是唯一的
  • ??? connection.uuid 就是 uuid 生成一個就好了
  • ??? connection.permissions 要添加上你的用戶名嘛
  • ??? vpn.gateway VPN 服務器的地址
  • ??? vpn.user VPN 服務的帳戶名
  • ??? ipv4.dns 按你喜好配置就好

既然了解了,就開工吧
準備配置信息及模板

首先,讓我們準備好材料:

            
VPN_SERVERS = [
  { 'id': 'yunti.pptp.a', 'gateway': 'a.example.com' },
  { 'id': 'yunti.pptp.b', 'gateway': 'b.example.com' },
  { 'id': 'yunti.pptp.c', 'gateway': 'c.example.com' },
]


          

配置中 uuid 需要動態生成了

            
>>> import uuid
>>> str(uuid.uuid1())
'0621ba62-888a-11e3-805c-44334c786649'


          

至于 connection.permissions、vpn.user 和 ipv4.dns 直接寫在配置模板中即可。

            
tpl.cfg

[connection]
id=%(id)s
uuid=%(uuid)s
type=vpn
permissions=user:greatghoul:;
autoconnect=false

[vpn]
service-type=org.freedesktop.NetworkManager.pptp
gateway=%(gateway)s
require-mppe=yes
user=greatghoul
refuse-chap=yes
refuse-eap=yes
password-flags=1
refuse-pap=yes

[ipv4]
method=auto
dns=8.8.8.8;8.8.4.4;
ignore-auto-dns=true


          

生成 VPN 連接配置文件

剩下的事,就只有遍歷 VPN 服務器信息,生成模板了

            
def add_connection(tpl, conn_info):
  filename = os.path.join(CFG_DIR, conn_info['id'])
  print ' Creating file:', filename 
  out = open(filename, 'w')
  out.write(tpl % conn_info)
  out.close()
  os.chmod(filename, 0600)

def create_all():
  tpl = open(os.path.join(CURRENT_DIR, 'tpl.cfg'), 'r').read()

  print 'Creating yunti connection files under', CFG_DIR
  for conn_info in VPN_SERVERS:
    conn_info.update(uuid=str(uuid.uuid1()))
    add_connection(tpl, conn_info)


          

我測試過,雖然 VPN 配置文件的文件名怎么寫都行,但是如果在 NetworkManager 中修改了該連接的信息,NetworkManager 會自動將該配置文件重命為 Connection Name (也就是配置文件中 id),所以在創建文件時,還是保持文件名與 id 一致才好。

還有一個注意點是,連接配置文件必須屬于 root:root 并且權限設置為 600, 因為我們需要通過 sudo 執行腳本,所以這里只需要控制 chmod 就行了。

            
os.chmod(filename, 0600)


          

完整的腳本

https://gist.github.com/greatghoul/9066705
享受成果

修改 tpl.cfg 中相關的用戶名為自己的,然后執行下面的命令。

            
$ sudo python create_yunti_config.py 
Cleaning up yunti connection files...
 Removing file: /etc/NetworkManager/system-connections/yunti.pptp.a
 Removing file: /etc/NetworkManager/system-connections/yunti.pptp.b
 Removing file: /etc/NetworkManager/system-connections/yunti.pptp.c
Creating yunti connection files under /etc/NetworkManager/system-connections
 Creating file: /etc/NetworkManager/system-connections/yunti.pptp.a
 Creating file: /etc/NetworkManager/system-connections/yunti.pptp.b
 Creating file: /etc/NetworkManager/system-connections/yunti.pptp.c


          

開始使用云梯吧 :)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 香蕉久久一区二区三区 | 在线视频一区二区三区 | 久久精品综合一区二区三区 | 综合色综合 | 亚洲视频www | 91国内精品久久久久影院优播 | 亚洲高清在线播放 | 免费看成人国产一区二区三区 | 精品一区 二区三区免费毛片 | 免费看欧美一级特黄a大片一 | 成人a毛片在线看免费全部播放 | 拍真实国产伦偷精品 | 欧美夜夜撸 | 欧美成人丝袜视频在线观看 | 日韩欧美亚洲综合 | 妖精视频免费在线观看 | 男人猛躁女人成人免费视频 | 国内自拍 在线播放 网红 | 日韩激情中文字幕一区二区 | 91视频中文字幕 | 色综合综合网 | xxxx日本在线播放免费不卡 | 欧美精品在线一区 | 精品国产乱码久久久久久浪潮 | 免费观看a黄一级视频 | 农村寡妇一级毛片免费播放 | 一本大道香蕉大vr在线吗视频 | 天天干天天爽天天射 | 亚洲在线观看视频 | 亚洲综合无码一区二区 | 日韩一级欧美一级毛片在线 | 偷偷鲁影院手机在线观看 | 国产精品自在线拍 | 日本久久精品视频 | 精品久久久久久亚洲精品 | 日韩精品欧美成人 | 色88888久久久久久影院 | 亚洲精品高清在线 | 欧美亚洲中日韩中文字幕在线 | 天天舔天天舔 | 97视频在线观看免费播放 |