点击关注,一起学习更多IT知识重启电脑 、拔网线 、找网管 、手动改DNS 。 很多人遇到网络问题,其实都在“瞎折腾”。 我做了个工具,解决这些问题: 一键检测、一键修复、自动连WiFi、自动生成报告。

检测功能,一键检测:
检测网关是否正常。
检测外网连通性。
检测DNS是否异常。
检测HTTP访问。
自动分析问题,并生成报告。
修复功能,一键修复所有问题:
自动启用网卡。
修复IP地址。
修复DNS。
重置网络协议。
智能WiFi连接。
自动扫描附近WiFi。
自动选择信号最强。
自动连接已保存网络。
自动生成报告。
二、直接开始部署,请看以下详细步骤:
步骤1、安装 Python+依赖包“requests”,由于太过简单,可以看上一篇链接里,请看以下链接:电脑连不上网?别乱试!用一个Python脚本帮你3秒定位,一键搞定(小白也能用)
步骤2、建立一个名称为“network_tool.py”的Python文件,由于代码过长,我放以下链接里了,请复制以下链接到浏览器后,直接可打开代码:
https://gitee.com/IT_pangge/it-explorer-fat-brother/raw/master/network_tool注:“network_tool.py”代码展示:
import osimport socketimport subprocessimport platformimport timefrom datetime import datetimeimport tkinter as tkfrom tkinter import scrolledtext, messageboximport requestsimport webbrowser# =============================# 基础工具# =============================defping(host): param = "-n"if platform.system().lower() == "windows"else"-c"return subprocess.call(["ping", param, "2", host], stdout=subprocess.DEVNULL) == 0defcheck_dns(domain):try:returnTrue, socket.gethostbyname(domain)except:returnFalse, Nonedefget_gateway():try: result = subprocess.check_output("ipconfig", encoding="gbk", errors="ignore")for line in result.split("\n"):if"默认网关"in line or"Default Gateway"in line: gw = line.split(":")[-1].strip()if gw:return gwexcept:passreturnNonedefget_local_ip():try:return socket.gethostbyname(socket.gethostname())except:return"未知"# =============================# WiFi模块# =============================defget_wifi_interface():try: result = subprocess.check_output("netsh wlan show interfaces", encoding="gbk", errors="ignore" )for line in result.split("\n"):if"名称"in line or"Name"in line:return line.split(":")[1].strip()except:returnNonedefget_wifi_status():try: result = subprocess.check_output("netsh wlan show interfaces", encoding="gbk", errors="ignore" )return ("已连接"in result or"connected"in result)except:returnFalsedefscan_wifi():try: result = subprocess.check_output("netsh wlan show networks mode=bssid", encoding="gbk", errors="ignore" )except:return [] networks = [] ssid = Nonefor line in result.split("\n"): line = line.strip()if line.startswith("SSID"): ssid = line.split(":")[1].strip()if"信号"in line or"Signal"in line: signal = int(line.split(":")[1].replace("%", "").strip())if ssid: networks.append((ssid, signal))return networksdefget_saved_wifi(): result = subprocess.check_output("netsh wlan show profiles", encoding="gbk", errors="ignore" ) profiles = []for line in result.split("\n"):if"所有用户配置文件"in line or"All User Profile"in line: profiles.append(line.split(":")[1].strip())return profilesdefconnect_wifi(ssid, log): interface = get_wifi_interface()ifnot interface: log("❌ 未找到WiFi网卡")returnFalse log(f"📶 连接WiFi: {ssid}(接口: {interface})") os.system(f'netsh wlan connect name="{ssid}" interface="{interface}"') time.sleep(3)if get_wifi_status(): log("🎉 WiFi连接成功")returnTrueelse: log("❌ WiFi连接失败")returnFalsedefsmart_connect_wifi(log): networks = scan_wifi() saved = get_saved_wifi()ifnot networks: log("❌ 未扫描到WiFi")returnFalse networks.sort(key=lambda x: x[1], reverse=True)for ssid, signal in networks:if ssid in saved: log(f"📡 尝试最优WiFi: {ssid}({signal}%)")if connect_wifi(ssid, log):returnTrue log("❌ 没有可连接的WiFi")returnFalse# =============================# 网卡管理# =============================defget_adapters(): result = subprocess.check_output("netsh interface show interface", encoding="gbk", errors="ignore" ) adapters = []for line in result.split("\n"):if"Connected"in line or"已连接"in line or"Disconnected"in line: parts = line.split()if len(parts) >= 4: adapters.append((parts[-1], parts[0]))return adaptersdefenable_adapter(name, log): log(f"🔧 启用网卡: {name}") os.system(f'netsh interface set interface "{name}" enabled')# =============================# 网络检测# =============================defrun_diagnosis(output_box): output_box.delete(1.0, tk.END) logs = [] status = {"gateway": False,"internet": False,"dns": False,"http": False }deflog(msg): output_box.insert(tk.END, msg + "\n") output_box.see(tk.END) logs.append(msg) log("===== 网络诊断开始 =====") log(f"本机IP: {get_local_ip()}")ifnot get_wifi_status(): log("⚠️ WiFi未连接") gateway = get_gateway()if gateway and ping(gateway): log("✅ 网关正常") status["gateway"] = Trueelse: log("❌ 网关异常")if ping("223.5.5.5") or ping("119.29.29.29"): log("✅ 外网正常") status["internet"] = Trueelse: log("❌ 外网不通") ok, ip = check_dns("www.baidu.com")if ok: log(f"✅ DNS正常 -> {ip}") status["dns"] = Trueelse: log("❌ DNS异常")try:if requests.get("http://www.baidu.com", timeout=5).status_code == 200: log("✅ HTTP正常") status["http"] = Trueexcept: log("❌ HTTP异常") generate_report(logs)return status# =============================# 自动修复(最终版)# =============================defauto_fix(output_box, status):deflog(msg): output_box.insert(tk.END, msg + "\n") output_box.see(tk.END) log("\n===== 开始自动修复 =====")ifnot status: messagebox.showwarning("提示", "请先检测网络")returnif all(status.values()): messagebox.showinfo("提示", "网络正常,无需修复 👍")returntry:# 1. 启用被禁用网卡 adapters = get_adapters()for name, state in adapters:if"Disabled"in state or"禁用"in state: enable_adapter(name, log)# 2. 修复网络协议 log("🔧 修复IP/DNS...") os.system("ipconfig /release") os.system("ipconfig /renew") os.system("ipconfig /flushdns") os.system("netsh winsock reset") os.system("netsh int ip reset")# 3. WiFi重连(最后执行🔥)ifnot get_wifi_status(): log("📡 尝试恢复WiFi连接...") smart_connect_wifi(log) log("✅ 修复完成") messagebox.showinfo("完成", "修复完成,请重新检测")except Exception as e: messagebox.showerror("错误", str(e))# =============================# 报告# =============================defgenerate_report(logs): file = f"report_{datetime.now().strftime('%Y%m%d_%H%M%S')}.html" html = "<html><body><h2>网络报告</h2><hr>"for l in logs: html += f"<p>{l}</p>" html += "</body></html>"with open(file, "w", encoding="utf-8") as f: f.write(html) webbrowser.open(file)# =============================# GUI(美化版)# =============================defgui(): win = tk.Tk() win.title("网络诊断与自动修复工具(Pro版)") win.geometry("760x600") win.configure(bg="#f5f6fa") title = tk.Label(win, text="网络诊断与自动修复工具", font=("微软雅黑", 18, "bold"), bg="#f5f6fa") title.pack(pady=10) box = scrolledtext.ScrolledText(win, width=90, height=25, font=("Consolas", 10)) box.pack(padx=10, pady=10) state = {"s": None}defcheck(): state["s"] = run_diagnosis(box)deffix():if state["s"] isNone: messagebox.showwarning("提示", "请先检测网络")return auto_fix(box, state["s"]) frame = tk.Frame(win, bg="#f5f6fa") frame.pack(pady=10) tk.Button(frame, text="🔍 开始检测", command=check, width=15, bg="#00a8ff", fg="white").grid(row=0, column=0, padx=10) tk.Button(frame, text="🛠 一键修复", command=fix, width=15, bg="#44bd32", fg="white").grid(row=0, column=1, padx=10) win.mainloop()if __name__ == "__main__": gui()三、直接进入文件目录,运行Python文件测试,请看以下截图:

注:断网和联网测试截图,即一开始展示的效果图:

四、直接进入文件目录打包成可执行的exe文件,请看以下截图:

五、测试总结:
实际测试效果:我测试了这些可修复场景:
WiFi断开✅
网卡禁用✅
DNS错误✅
DHCP异常 ✅
网络卡死✅
不能修复的情况,这些属于物理问题:
网线没插 ❌
路由器断网 ❌
运营商故障 ❌
夜雨聆风