网卡切换 python_想知道怎么用python自动根据网速自动切换网关吗 ? 这里告诉你 !...

2ded7e61d409068740a5b2afd90a03a5.png

前言

公司里装了两条不同的宽带,根据使用的情况,比如拨VPN,或者使用人数过多,网速不行了就要切换下。每次手动去切换很不方便,而且网速也很难判断。这里分享下如何用Python检测网速,然后自动切换网关。

使用speedtest-cli测试网速

相信很多人都用过http://speedtest.net来测试网络速度,speedtest-cli是一个Python开源项目。通过链接speedtest.net来检测上传速度和下载速度。

安装

pip install speedtest-cli

或者

easy_install speedtest-cli

测试网速

安装之后就可以通过命令行来测试下网速:

speedtest-cli --bytes

d6e6e21e9f99fb426f77a2ba6174fa5d.png

根据log我们大概可以推测下这个程序的工作步骤:

从http://speedtest.net读取配置文件。

获得一个server列表。

找到最近的server作为最优选择用来测试速度。

这种最优方式适合检测网络的最大下载速度。而我现在需要的是根据网络访问速度切换网关,比如我需要经常访问国外某个网站,这个最大下载速度就没有意义了。要检测速度,我可以随意设置一些这个网站上的图片资源作为测试数据,而并不需要使用http://speedtest.net。

自定义函数用于检测网速

通过学习源码,我们可以自己重写一个网速测试函数。找到{Python Installation Directory}Libsite-packagesspeedtest_cli.py根据speedtest()创建的函数很简单:

def 

原始代码是先找到最佳服务器,然后从上面获取URL资源。这里只需要随便设置我需要的资源:

urls 

看看源码中的下载速度是如何计算的?

def 
  • 在线程中读取读取图片资源。
  • 把线程放入阻塞的队列中。
  • 从队列中把线程的结果一个个读取出来。
  • speed = total file sizes / total time cost

学习从来不是一个人的事情,要有个相互监督的伙伴,工作需要学习python或者有兴趣学习python的伙伴可以私信回复小编“学习”或者评论,留言,点赞 领取全套免费python学习资料、视频()装包

720e24aade070f451c64420dabaf0601.png

查询网络适配器设置,并设置网关

如何用Python设置网关?在StackOverflow上可以找到解答。推荐的方法是使用WMI (Windows Management Instrumentation)。

安装

WMI
Python for Windows Extensions

Win32网络适配器设置

很多人的电脑上会看到很多的网络适配器,比如无线网卡的,虚拟网卡的,以太网卡的等等。每个适配器都有很多属性,看下微软的定义Win32_NetworkAdapterConfiguration class::

[

找到了某个特定属性所对应的值,我们就可以很容易找到目标适配器了。我是这样查找的:

  • 右键目标网络适配器。
  • 选择配置。
  • 点击详细。
  • 看一下属性列表及对应的值。
    最后选择了设备描述Realtek PCIe GBE Family Controller。

95b953deb419b0305652545a4c84e1e9.png

用Python查询Windows IP和网关

wmiObj 

设置Windows网关

configurations 

请注意脚本必须用管理员权限来执行,不然设置会失败。记得查看返回值。

for gateway in gateways:
        

把Python脚本转换成可执行EXE

如何把Python程序分发给别人使用如果他们并没有安装Python程序以及依赖库?使用Py2exe 可以很容易把Python脚本转换成exe文件。

安装

Py2exe

转换Python脚本

新建setup.py:

from 

执行下面的命令:

python 

目录中会生成一个dist 文件夹:

317aa81df9eab68a25cd2987b6e9ac6d.png

记得执行程序的时候必须要用管理员权限

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值