新用户注册入口 老用户登录入口

[转载]Python自动切换wifi

文章作者:转载 更新时间:2024-01-14 10:28:12 阅读数量:79
文章标签:Python系统命令os模块ping检测脚本实现
本文摘要:该文章介绍了如何利用Python的os模块和subprocess.Popen函数实现自动切换WiFi功能以应对游戏过程中频繁断网的问题。作者详细阐述了通过系统命令"netsh wlan"查看和连接WiFi的方法,并使用ping检测网络连通性。脚本首先获取当前WiFi,然后测试其能否成功ping通百度服务器,若无法ping通,则从预设的WiFi列表中随机选择一个进行连接。通过这一自动化脚本实现WiFi连接管理,有效解决了文本游戏断网问题,充分体现了“人生苦短,我用Python”的便捷与高效。
转载文章

本篇文章为转载内容。原文链接:https://blog.csdn.net/qq_34377830/article/details/82497457。

该文由互联网用户投稿提供,文中观点代表作者本人意见,并不代表本站的立场。

作为信息平台,本站仅提供文章转载服务,并不拥有其所有权,也不对文章内容的真实性、准确性和合法性承担责任。

如发现本文存在侵权、违法、违规或事实不符的情况,请及时联系我们,我们将第一时间进行核实并删除相应内容。

前言

最近在打游戏的时候经常会遇到断网的情况,每次都需要切出去切换wifi,很烦人,所以就写了个用Python自动切换可用的wifi来减少困扰。

几个系统命令

这次我们是使用python中的os模块来模拟命令行来执行命令切换wifi,所以在写程序之前,可以先了解一下几个命令。

查看当前wifi:netsh wlan show interfaces查看所有wifi:netsh wlan show profiles连接wifi:netsh wlan connect name="wifi名称"

思路

这次我们写的程序的主要思路如下:

1.获取当前wifi
2.测试当前wifi能否ping通百度
3.如果能ping通则等待5s后继续测试
4.如果ping不通则在能够连接的wifi中随机选择一个来连接

代码

获取当前wifi

import os
import subprocessdef get_current_wifi():cmd = 'netsh wlan show interfaces'p = subprocess.Popen(cmd,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True)ret = p.stdout.read()index = ret.find("SSID")if index > 0:return ret[index:].split(':')[1].split('\r\n')[0].strip()else:return None

这里我们使用subprocess.Popen函数来模拟执行命令行命令,并通过read()方法得到命令行的结果,接着对结果进行分析可以得到当前的wifi。

测试能否ping通

def check_ping(ip, count=1, timeout=1000):cmd = 'ping -n %d -w %d %s > NUL' % (count, timeout, ip)res = os.system(cmd)return 'ok' if res == 0 else 'failed'

这里我们首先构建了一个cmd命令来ping我们自己传递过来的ip地址,然后使用os.system()函数执行该命令,如果返回值为0则ping通,否则失败。

自动切换wifi

import randomdef auto_switch_wifi(wifiList):wifi = random.choice(wifiList)cmd = 'netsh wlan connect name={}".format(wifi)res = os.system(cmd)return 'ok' if res == 0 else 'failed'

在auto_switch_wifi()函数中,我们接收一个可用的wifi列表,然后再列表中随机选择一个wifi进行切换,如果成功则返回ok。

到这里我们的几大基本模块已经写完了,下面上完整代码。

# _*_ coding:utf-8 _*_
import os
import time
import subprocess
import randomdef check_ping(ip, count=1, timeout=1000):cmd = 'ping -n %d -w %d %s > NUL' % (count, timeout, ip)# 通过os.system()方法执行命令response = os.system(cmd)return 'ok' if response == 0 else 'failed'def get_current_wifi():cmd = 'netsh wlan show interfaces'p = subprocess.Popen(cmd,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True)ret = p.stdout.read()index = ret.find('SSID')if index > 0:return ret[index:].split(':')[1].split('\r\n')[0].strip()def auto_switch_wifi(wifiList):wifi = random.choice(wifiList)cmd = 'netsh wlan connect name="%s"' % wifires = os.system(cmd)return 'ok' if res == 0 else 'failed'def main():# 百度ipipTest = '61.135.169.121'# 可以切换的wifiwifiList = ['HUAWEI-5DD8']while True:current_wifi = get_current_wifi()print "当前的wifi为:", current_wifiif check_ping(ipTest, 2) != 'ok':print "联网失败,正在切换wifi"if auto_switch_wifi(wifiList) == 'ok':print "切换成功"print "-" * 40else:continuetime.sleep(5)else:print "可以成功联网"print '-' * 40time.sleep(5)if __name__ == "__main__":main()

总结

人生苦短,我用python!代码还有可以完善的地方,如果想要扩展更多功能的童鞋可以自己探索哈!

本篇文章为转载内容。原文链接:https://blog.csdn.net/qq_34377830/article/details/82497457。

该文由互联网用户投稿提供,文中观点代表作者本人意见,并不代表本站的立场。

作为信息平台,本站仅提供文章转载服务,并不拥有其所有权,也不对文章内容的真实性、准确性和合法性承担责任。

如发现本文存在侵权、违法、违规或事实不符的情况,请及时联系我们,我们将第一时间进行核实并删除相应内容。

相关阅读
文章标题:[转载][洛谷P1082]同余方程

更新时间:2023-02-18
[转载][洛谷P1082]同余方程
文章标题:[转载]webpack优化之HappyPack实战

更新时间:2023-08-07
[转载]webpack优化之HappyPack实战
文章标题:[转载]oracle 同时更新多表,在Oracle数据库中同时更新两张表的简单方法

更新时间:2023-09-10
[转载]oracle 同时更新多表,在Oracle数据库中同时更新两张表的简单方法
文章标题:[转载][Unity] 包括场景互动与射击要素的俯视角闯关游戏Demo

更新时间:2024-03-11
[转载][Unity] 包括场景互动与射击要素的俯视角闯关游戏Demo
文章标题:[转载]程序员也分三六九等?等级差异,一个看不起一个!

更新时间:2024-05-10
[转载]程序员也分三六九等?等级差异,一个看不起一个!
文章标题:[转载]海贼王 动漫 全集目录 分章节 精彩打斗剧集

更新时间:2024-01-12
[转载]海贼王 动漫 全集目录 分章节 精彩打斗剧集
名词解释
作为当前文章的名词解释,仅对当前文章有效。
os模块os是Python内置的标准库之一,全称为operating system(操作系统),提供了与操作系统进行交互的一系列函数,如读写文件、创建目录、执行系统命令等。在本文中,作者使用os模块中的system()函数来执行ping命令以检测网络连通性,并通过模拟命令行操作实现WiFi的切换。
subprocess.Popensubprocess是Python的一个标准库,其中Popen类用于创建新的子进程,执行指定的命令或程序,并可以控制子进程的输入输出以及获取其返回状态。在文章中,作者通过调用subprocess.Popen方法执行Windows系统命令`netsh wlan show interfaces`来获取当前连接的WiFi信息。
netsh wlannetsh(网络外壳)是Windows操作系统中提供网络配置和故障排除功能的命令行工具,wlan子命令集主要用于无线局域网(Wi-Fi)的管理,包括查看、创建、修改和删除无线网络接口及配置。文中提到的几个命令如`netsh wlan show interfaces`用于查看当前无线网络接口的状态,而`netsh wlan connect name=wifi名称`则是用于连接特定名称的无线网络。
ping命令ping是一种常用的网络诊断工具,在Linux/Unix系统和Windows系统中均有实现。它通过发送ICMP(Internet Control Message Protocol,互联网控制消息协议)回显请求数据包到目标主机并监听回应,以此判断两台计算机之间的网络连通性。在该篇文章中,作者编写了一个check_ping函数,利用ping命令对百度服务器IP地址进行连通性测试,如果无法ping通则认为网络存在问题,需要进行WiFi切换。
延伸阅读
作为当前文章的延伸阅读,仅对当前文章有效。
在Python编程日益普及的今天,利用Python解决日常生活中的实际问题是许多开发者和爱好者积极探索的方向。近日,一篇关于使用Python自动切换WiFi的文章引起了广泛关注。文章中提到,作者通过Python的os模块执行系统命令实现对WiFi连接状态的智能管理,尤其适用于游戏过程中因网络问题导致的断网困扰。
随着物联网和智能家居的发展,网络连接稳定性愈发重要。不仅在游戏中,在远程办公、在线教育等场景下,网络的瞬时波动也可能带来严重影响。实际上,Python在系统管理自动化方面的应用远不止于此。例如,有开发者利用Python编写自动化脚本监控家庭路由器的状态,根据信号强度及网络拥堵情况动态调整信道;亦有团队开发出基于Python的跨平台网络诊断工具,能够快速定位并修复网络故障。
进一步探讨Python在网络管理上的潜力,我们可以看到其在企业级网络运维领域的广泛应用。比如,结合Python与SNMP协议可以实现大规模网络设备的集中监控与管理;利用netmiko库,Python能轻松操控多品牌网络设备进行配置备份、批量升级等工作。
此外,Python在网络安全领域也大显身手,诸如自动化渗透测试工具、网络流量分析系统以及恶意行为检测引擎等,均能看到Python的身影。可见,Python以其强大的可扩展性和丰富的第三方库,为各类网络相关问题提供了灵活而高效的解决方案,持续赋能现代生活和各行各业的数字化进程。
知识学习
实践的时候请根据实际情况谨慎操作。
随机学习一条linux命令:
dig example.com - 使用DNS查询域名信息。
随便看看
拉到页底了吧,随便看看还有哪些文章你可能感兴趣。
可自定义logo的jQuery生成二维码插件 01-03 jquery每日签到日历插件 10-10 高度可定制的jQuery瀑布流网格布局插件 03-15 Consul中服务实例自动注销问题解析:健康检查、稳定性与Agent配置的影响及解决策略 01-22 怎么看mysql 的安装路径 12-31 jquery横向手风琴效果 12-23 蓝色数码电子产品销售HTML5网站模板 12-14 jQuery和CSS3汉堡包导航菜单打开动画特效 10-19 python模拟生存游戏 10-08 本次刷新还10个文章未展示,点击 更多查看。
jQuery.eraser-实现橡皮擦擦除功能的jquery插件 05-26 Netty中ChannelNotRegisteredException异常处理:理解原因与确保Channel注册状态的方法示例 05-16 响应式游戏开发类企业前端cms模板下载 05-02 精美的花甲美食网站HTML模板下载 03-09 soulmate粉色干净浪漫唯美婚礼单页响应式网站模板 03-07 Vue.js项目中proxyTable数据转发遭遇504错误:服务器响应时间与网络连接问题排查及解决方案 03-05 SpringCloud服务路由配置错误与失效:识别问题、排查步骤及组件解析这个涵盖了的核心内容,包括SpringCloud框架下的服务路由配置错误失效问题的识别,以及涉及到的服务注册中心、Gateway、Zuul等组件的功能解析和故障排查的具体步骤。同时,字数控制在了50个字以内,满足了要求。 03-01 css水平线长度设置 02-11 [转载]Proxy 、Relect、响应式 01-11 蓝色响应式软件营销代理公司网站静态模板 01-06 python正太分布校验 01-05
时光飞逝
"流光容易把人抛,红了樱桃,绿了芭蕉。"