2026-06-08 13:48:31 +08:00
OK
2026-06-06 12:34:35 +08:00
OK
2026-06-08 13:39:59 +08:00
OK
2026-06-06 12:34:35 +08:00
OK
2026-06-08 13:39:59 +08:00
OK
2026-06-08 13:48:31 +08:00
OK
2026-06-06 12:34:35 +08:00

NetPilot 网络调试工具

NetPilot 是一个基于 Python Tkinter 的 Windows 网络调试工具,面向日常桌面网络排障、网卡配置、局域网资产发现和连通性检测场景。

应用采用左侧功能导航、右侧公共输出控制台的布局。所有功能页的执行日志、诊断过程和错误提示都会统一输出到右侧控制台,便于在不同工具之间切换时保留排障上下文。

功能概览

网卡配置

  • 读取本机所有网卡,包括已启用和已禁用的网卡。
  • 显示网卡描述、MAC 地址、连接状态、IPv4 地址、子网掩码、默认网关、DNS 等信息。
  • 支持启用网卡、禁用网卡。
  • 支持 DHCP 自动获取和静态 IPv4 / DNS 配置切换。
  • 支持重新读取网卡信息,便于配置变更后快速刷新。
  • 支持网卡配置模板保存、套用和删除。

说明:修改网卡状态、IP、网关、DNS 等配置通常需要以管理员权限运行程序。

DNS 诊断

  • 读取本机网卡 DNS 配置,并支持选择不同网卡进行诊断。
  • 支持手动填写或自动补全 DNS 服务器。
  • 支持多个域名、多个记录类型的解析测试。
  • 对不同 DNS 服务器的解析结果、耗时、失败原因进行对比。
  • 诊断结果以表格展示,支持复制摘要和导出 CSV。
  • 提供“修复异常”功能,用于处理常见 DNS 配置异常。

设备发现

  • 按所选网卡的配置网段进行局域网设备发现。
  • 通过 Ping 探活和 ARP 信息补充发现设备。
  • 展示 IP、MAC、厂商、来源网卡、延迟、发现方式和备注。
  • 支持自动范围、刷新网卡、开始发现、停止发现。
  • 支持复制设备清单和导出 CSV。

当前设备发现按配置网段扫描,不再做跨网段邻居表扩展,也不做主机名解析。

Ping 探测

  • 支持单目标 Ping 和批量 Ping。
  • 支持指定次数、持续探测、间隔、超时、包大小、TTL、禁止分片。
  • 支持选择本地源 IP。
  • 批量目标支持 CIDR、IP 范围和列表输入。
  • 输出实时探测结果,并统计丢包率、平均延迟、抖动和质量状态。
  • 支持导入目标和导出 CSV。

端口扫描

  • 支持单主机单端口连通性测试。
  • 支持端口列表、端口范围和常用端口预设。
  • 支持批量主机扫描,目标可使用 CIDR、IP 范围或列表。
  • 支持并发数、超时、仅显示开放端口等控制项。
  • 支持服务名识别和可选 Banner 探测。
  • 支持复制开放端口和导出 CSV。

路由追踪

  • 支持 IPv4 / IPv6 路由追踪。
  • 支持主机名解析开关。
  • 支持单次、指定次数和持续追踪。
  • 支持最大跳数、单跳超时、高延迟阈值等参数。
  • 展示逐跳 RTT 表格,并保留原始命令输出。
  • 对超时、高延迟、波动等情况给出诊断摘要。
  • 支持复制摘要和导出 CSV。

环网检测

  • 基于本机网卡统计、广播 / 组播流量、ARP / 邻居表变化和网关 Ping 稳定性进行综合判断。
  • 用于辅助发现疑似二层环路、广播风暴或局域网异常波动。
  • 支持检测单个网卡或全部活动网卡。
  • 输出诊断摘要,支持复制和导出 CSV。

IP 冲突

  • 支持检测本机 IP 冲突风险。
  • 支持按网段进行安全限速扫描。
  • 结合地址状态、系统事件、ARP / 邻居信息、IP / MAC 异常关系判断冲突风险。
  • 支持自动范围、刷新网卡、复制摘要和导出 CSV。

界面说明

  • 左侧为功能导航区。
  • 中间为当前功能页的参数和结果区域。
  • 右侧为公共输出控制台,所有页面共用。
  • 底部状态栏显示当前状态、本机名、操作系统和权限状态。

公共控制台可用于查看执行过程、错误提示和诊断摘要;点击“清空”可以清除当前控制台内容。

运行环境

  • 操作系统:Windows 10 / Windows 11
  • Python:建议 Python 3.10 或更高版本
  • UI 框架:Tkinter
  • 系统依赖:PowerShell、Windows 网络相关命令

大部分只读诊断功能可以普通权限运行。涉及以下操作时建议使用管理员权限:

  • 启用或禁用网卡
  • 修改 IP、网关、DNS、DHCP
  • 执行部分需要系统网络信息的诊断或修复动作

源码运行

在项目根目录执行:

python main.py

如果需要管理员权限,可以使用管理员 PowerShell 进入项目目录后再执行:

cd E:\Git\Network-tools
python main.py

打包

项目提供了 Windows 打包脚本:

.\打包.bat

打包完成后,输出文件位于:

dist\NetworkTool.exe

打包脚本会优先使用本机指定的 Python 运行时,并在 .packaging\pyinstaller 下安装 PyInstaller;如果指定运行时不存在,则尝试直接调用系统中的 pyinstaller

目录结构

Network-tools
├─ assets                  # 图标等静态资源
├─ core
│  ├─ Function             # 网络检测和配置相关业务逻辑
│  └─ ui                   # Tkinter 界面、主题和各功能页
├─ main.py                 # 程序入口
├─ 打包.bat                # PyInstaller 打包脚本
├─ NetworkTool.spec        # PyInstaller 配置
└─ README.md

配置和导出文件

  • 网卡配置模板会保存到程序同级目录的 network_profiles.json
  • 各功能页的 CSV 导出文件由用户在导出时选择保存路径。
  • 程序不会主动上传网络检测结果,所有诊断和导出均在本机完成。

常见问题

为什么修改网卡配置失败?

请确认程序以管理员权限运行。Windows 对网卡启用/禁用、IP 配置、DNS 配置等操作有权限限制。

为什么设备发现扫不到某些设备?

常见原因包括:

  • 目标设备禁用了 ICMP Echo 响应,无法被 Ping 探活。
  • 目标设备与当前网卡不在同一配置网段内。
  • 本机防火墙或安全软件限制了探测行为。
  • 交换机、VLAN、无线隔离或终端防火墙阻止了局域网发现。
  • 扫描期间目标设备未产生可见 ARP 信息。

当前设备发现按所选网卡的配置网段扫描,不会跨网段扫描,也不会解析主机名。

为什么 DNS 诊断的网卡数量和系统里看到的不一样?

程序会尽量读取启用和禁用网卡,但部分虚拟网卡、隧道网卡、隐藏适配器或驱动异常的网卡,可能无法提供完整 DNS/IP 信息。可以先在网卡配置页刷新网卡,确认目标网卡是否能被系统命令读取。

为什么部分按钮是灰色不可用?

按钮状态会根据当前任务状态和网卡状态变化。例如扫描正在运行时会禁用开始按钮;没有选择有效网卡或当前网卡状态不支持某项操作时,也会禁用对应按钮。

导出的 CSV 用 Excel 打开乱码怎么办?

建议使用 Excel 的“数据 -> 自文本/CSV”导入方式,并选择 UTF-8 编码。也可以先用支持 UTF-8 的编辑器检查文件内容。

开发说明

界面层主要位于 core/ui

  • ui_main.py:主窗口布局、侧边栏、公共输出控制台、页面切换。
  • theme.py:全局颜色、字体、ttk 样式。
  • components.py:公共 Page、Console、字段、按钮等组件。
  • tab_*.py:各功能页 UI 和事件逻辑。

业务逻辑主要位于 core/Function

  • network_fun.py:网卡读取和配置。
  • dns_diag_fun.pyDNS 诊断。
  • device_discovery_fun.py:设备发现。
  • ping_fun.pyPing 探测。
  • telnet_fun.py:端口连通性和扫描。
  • tracert_fun.py:路由追踪。
  • loop_fun.py:环网检测。
  • ip_conflict_fun.pyIP 冲突检测。

开发时建议先运行:

python -m compileall main.py core

再启动界面进行手动验证:

python main.py
S
Description
No description provided
Readme 800 KiB
Languages
Python 99.7%
Batchfile 0.3%