首页 > 编程 > Python > 正文

编写Python脚本批量配置VPN的教程

2020-02-23 01:07:25
字体:
来源:转载
供稿:网友

缘起

大家都知道,最近的网络不怎么和谐,速度慢不说,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.tw1uuid=063db9b5-5915-4f3e-8bb4-2fe58abf5be5type=vpnpermissions=user:greatghoul:;autoconnect=false[vpn]service-type=org.freedesktop.NetworkManager.pptpgateway=tw1.example.comrequire-mppe=yesuser=greatghoulrefuse-chap=yesrefuse-eap=yespassword-flags=1refuse-pap=yes[ipv4]method=autodns=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)suuid=%(uuid)stype=vpnpermissions=user:greatghoul:;autoconnect=false[vpn]service-type=org.freedesktop.NetworkManager.pptpgateway=%(gateway)srequire-mppe=yesuser=greatghoulrefuse-chap=yesrefuse-eap=yespassword-flags=1refuse-pap=yes[ipv4]method=autodns=8.8.8.8;8.8.4.4;ignore-auto-dns=true

生成 VPN 连接配置文件

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表