Releases: Yata-Datacom/Network-Device-Server-Inspection-Tool-GUI-Edition
Release list
v5.2.2 —— 连接更稳 + 采样快约 6 倍
v5.2.2 —— 连接更稳 + 采样快约 6 倍
修的真实故障
- 连接通道必释放:
channel.close()原来只在成功路径执行,命令报错 / 超时 / 被「停止」时通道不释放
→ 设备 VTY 会话被挂住(实测挂了 3 小时),后续再连同一台设备就被回Unable to open channel。
现改为finally必关 + 通道读超时兜底。 - 瞬时故障自动重试一次:「通道被拒 / 被掐 / 超时」→ 换新连接、隔 2.5 秒重试一次;
认证失败等确定性错误不重试(避免无谓撞库)。 - 报错翻中文:
Unable to open channel→ 提示“密码是对的,是设备侧会话被占满”
(常见于同时开了两个工具实例 / 上一轮连接未释放),并给出下一步怎么做。
性能
- 采样提速约 6 倍:原来每条命令死等 3 秒静默才算读完(11 条命令 = 35 秒/台)。
现在从登录 banner 认出设备提示符(<SW-1>/[SW-1]),输出末尾出现提示符就立刻收工;
认不出提示符的老设备自动退回原逻辑。
实测:2 条只读命令 7~8 秒 → 3.2 秒(单条 3.5s → 0.6s)。 - 面板「两轮间隔」默认 5 → 1 分钟(方便用小设备表自测)。
下载
| 文件 | 说明 | SHA256 |
|---|---|---|
NetworkInspection-V5-For-Yata.exe |
个人版(8 页签,含 Ring Alert 故障视图) | 1620fdd34b80b2be77693dbc327579a54ba240333edf4b9a6f98ce4ef7e0a34f |
devices_demo.xlsx |
示例设备清单(Excel 五列:IP/用户名/密码/类型/命令,开箱可改用) | — |
devices_demo.txt |
示例设备清单(文本格式 IP:用户名:密码:类型:"命令",与 xlsx 等价) |
— |
测试 275 项全绿(+10);V4(同事版)同源同步为 4.1.2。
v5.2.0 —— 故障定位(人话故障卡)
🚨 故障定位(v5.2.0)—— 告警不再是一堆散点,而是「故障 + 处理步骤」
面向不会数通的操作者:Ring Alert 页签结果**默认显示「故障视图」**人话卡片,可一键切「告警明细」。
❗ 故障 1|二层环路(网络里有一根线接成了圈) ← 先处理这个
故障设备:10.21.11.193 置信度:高
【现象】涉及端口 10 个:XGE0/0/2、0/0/3 …|广播量约 7244 pps(正常 <1000)|源头 MAC f033-e508-0567
【判断】同一个 MAC 同时出现在这些端口上 → 这些端口之间被线路环接了
【怎么处理】先拔掉 XGE0/0/3 的网线,等 1 分钟看广播是否下降 → 顺着这根线找另一端
新增
- 故障事件层
ring_events.py:把逐条告警聚合成「故障」,按证据强弱打分点名故障设备;
同一设备的风暴 / 环路日志 / MAC 证据合为一个故障;单端口轻微广播并入一条「终端级」 - D13 同设备 MAC 多端口冲突:单轮即可判定,直接给出「哪两个口之间被环接了」
- D4 环路组聚合:同速率多口合成一条告警(一次环路从上百条散点 → 个位数)
- D7 日志结构化:从 MFLP / MAC_MOVE 行抽取 MAC / VLAN / 端口 / 事件
- 采样体检:逐条命令记录 字节/行数/是否报错 —— 一眼区分「命令没拿到数据」与「没发现环路」
- 大表模式:更大的静默窗口与单命令超时(
silence_rounds),避免大表被截断 - 三层设备(BRAS / ME60)自动标记
l2_table_na,二层判据不再误判
实测(真实 126 条告警)
聚合后 → 3 个严重(正是三台环路的接入交换机)+ 1 一般 + 6 提示,并直接给出源 MAC 与端口对。
下载
| 文件 | 说明 | SHA256 |
|---|---|---|
NetworkInspection-V5-For-Yata.exe |
个人版:8 个页签(含 Ring Alert 故障视图) | 48332099b11e161302fac120b9512c51fea8b529451d694034ce2f378efa5c99 |
测试 265 项全绿;V4(同事版)同源裁剪为 11 条规则(无 D8/D9)。
v5.1.2 —— 清掉最后一个已知问题
清掉最后一个已知问题 —— 「已知问题」清单现在是空的
Fixed
analyze_reports()在报告路径打错 / 文件被挪走时会把FileNotFoundError直接抛给调用方,
与同函数对「解析不出设备」的处理风格不一致(GUI 被迫兜异常)。现在降级为warnings:
界面只展示提示,不再弹异常;第二期报告读不到时同样降级,并自动退回单轮模式
下载
| 文件 | 说明 | 大小 | SHA256 |
|---|---|---|---|
NetworkInspection-V5-For-Yata.exe |
个人版:7 个页签 + Ring Alert 环路告警(12 条判据 / 两轮采样) | 16.4 MB | 6559b94977233f7a494dd502adbf81c1e84f1a459a4f6c2fe7991431d724f858 |
NetworkInspection-V3-For-Yata.exe |
基础版:7 个页签,不含环路告警 | 16.0 MB | bcfa9c7cffbc833cc0e97980ff51bcb718ac3310dfad9beac8e31282d6e74975 |
关于校验
源码改了 ≠ exe 里改了。 本次发布用仓库自带 tools/verify_exe_fixes.py 解包 exe 内的 PYZ
逐项确认修复已真正打进二进制(同时确认不含旧实现残留);本地 252 项测试全绿。
v5.1.1 —— 修三个静默缺陷(阈值/温度/规则表回读)
修三个「不报错但结果错」的静默缺陷(均由新增的 pytest 套件发现)。
Fixed
rules.yaml里改阈值完全不生效 —— 规则表用thresholds:嵌套写法,而判据引擎只读顶层键,
一律回退内置默认值(例:把广播风暴阈值改成 100000,仍按 1000 判)。
现在顶层优先、其次读thresholds子键,改规则表真的生效了- 温度判据取到的「温度」其实是槽位号 —— 固定宽度槽位表里第一个 -20
120 的数字被当成温度,N 度比较,真实过温静默漏报。现在按表头定位
导致 D11 永远拿 1Temperature(C)列取值 - 首次运行自动释放
rules.yaml后没有回读 —— 那次调用缺signals,D7 日志关键字静默失效
(新装 exe 或删掉规则表后才会遇到)。现在写出后立刻解析回读
下载
| 文件 | 说明 | 大小 | SHA256 |
|---|---|---|---|
NetworkInspection-V5-For-Yata.exe |
个人版:巡检 + 配置备份 + 流量测试 + 安全核查 + 主动探测 + 环路告警(12 条判据) | 16.4 MB | 46d6cc6baa4597b9ffaf78c96a2b0993ffb8d787844d51c083c7411372b20d57 |
NetworkInspection-V3-For-Yata.exe |
基础版:7 个页签,不含环路告警 | 16.0 MB | 1596a073de9997284d371d1f357939a80232a3646b729b0f999a97f07cbb7b9f |
⚠️ 依赖必须锁paramiko>=3.5,<4(老设备只支持ssh-rsa,paramiko 4/5 已移除该实现)。
v5.1.0 —— 工程化改造 + 环路告警在线采样修复
工程化改造版 + 修一个影响环路告警可用性的真 bug。
新增(工程化)
- LICENSE:MIT;
pyproject.toml(pip install -e .可用,命令入口net-inspect) tests/测试套件:判据引擎 12 条规则、解析层华为两种排版、编排层两轮差分、v5/镜像一致性- GitHub Actions:
ci.yml(Windows pytest + Linux ruff)、build.yml(打 tag/手动触发 → V3/V5 两个 exe) - CHANGELOG.md + 语义化版本(
pyproject.toml与__version__双处一致)
修复(重要)
- 环路告警「A. 在线两轮采样」连不上任何设备:调用宿主的 SSH 帮助函数时漏传
client参数
(_ssh_connect()是就地连接、返回None)→ 每台设备都抛异常、两轮采样全是空数据,
而结果提示不管几轮都写「单轮时看不出…」,看着像「只跑了一轮」 - 结果提示现在按「单轮快照 / 两轮差分」分开,并显示第 1 轮/第 2 轮各几台有数据;
失败原因(连接超时 / 认证失败 / 命令不被该平台支持)直接列在弹窗里
下载
| 文件 | 说明 | 大小 | SHA256 |
|---|---|---|---|
NetworkInspection-V5-For-Yata.exe |
个人版:巡检 + 配置备份 + 流量测试 + 安全核查 + 主动探测 + 环路告警(12 条判据) | 16.4 MB | 884049877adfa83d84785586db774776f39815a11d93d3929b379eb4a990ec20 |
NetworkInspection-V3-For-Yata.exe |
基础版:7 个页签,不含环路告警 | 16.0 MB | a7a7608c2f26f268d49dd8749c79a1c4ab10ecf6bb186dec00c87e07b6996414 |
⚠️ 依赖必须锁paramiko>=3.5,<4:老设备(ME60 等)只支持ssh-rsa,paramiko 4/5 已移除该实现。
V5 & V3 — 新增「环路告警」页签
本次更新:新增「🔁 环路告警」页签
在巡检工具里新增第 8 个页签 Ring Alert:检测环路特征与硬件劣化,每条告警都带
原始证据行 + 置信度 + 建议动作 —— 宁可报“可疑”让人工判断,也不武断下结论。
检测项
| 编号 | 名称 | 数据来源 |
|---|---|---|
| D1 | MAC 漂移 | display mac-address |
| D2 | STP 拓扑变化(TC 增量) | display stp |
| D3 | 根桥变更 | display stp |
| D4 | 广播/组播风暴 | display interface |
| D5 | 接口误码增长(CRC) | display interface [brief] |
| D6 | 链路震荡 | display interface |
| D7 | 厂家日志关键字映射 | display logbuffer / display alarm active |
| D10 | 光衰(收发功率 / 趋势 / 模块自报) | display interface 的 Rx/Tx Power 行 |
| D11 | 温度 | display temperature |
| D12 | 电源 / 组件状态 | display device |
| D8 * | BPDU 自环特征 | display stp interface |
| D9 * | 跨设备关联(同一 MAC 出现在两台设备) | 多设备比对 |
* 深度检测项,默认不勾选(仅 V5 具备)
两种用法
- 在线两轮采样(主力):工具自己连设备跑两遍(间隔可设,默认 30 分钟),对两轮结果做
差分 —— 只有这样才能看出“正在变化”(CRC 等计数器是历史累计值,单看一次快照看不出) - 离线分析报告:选 1~2 份巡检导出的报告 CSV 分析,适合事后复盘
顺手修好的
- 「⚠ 上一异常」按钮(原先只有“下一异常”,翻过头要重来)
- 导出 HTML/CSV 可自选保存路径(原先固定写进临时目录)
- 修复打包后
profiles/presets/backups/reports落进%TEMP%\_MEIxxxx(重启即丢)的问题
下载
| 文件 | 说明 | 大小 | SHA256 |
|---|---|---|---|
NetworkInspection-V5-For-Yata.exe |
个人版:巡检 + 配置备份 + 流量测试 + 安全核查 + 主动探测 + 环路告警(12 条判据) | 16.4 MB | d721aae874c592cd83bfe03acf5e5f3862d8cc02561b495ddafada7a484855d6 |
NetworkInspection-V3-For-Yata.exe |
个人版(基础):含「环路告警」10 条判据,无 BPDU 自环 / 跨设备关联 | 16.0 MB | e9790fe12b89cc57d3062086168ade5716c4a38b678c2793ba9a6d4f9db71aeb |
使用:单文件 exe,双击即用(免安装、无需 Python)。首次运行会在同目录自动生成
rules.yaml(阈值 + 日志关键字,可直接改,改完点页签里的「重新加载规则」即时生效)。
设备清单放在 exe 同目录:devices.xlsx(五列:IP / 用户名 / 密码 / 类型 / 命令)或兼容的 devices.txt。
⚠️ 巡检命令均为只读查询,但都会登录设备执行 —— 请确认已获得授权。