Skip to content

Latest commit

 

History

History
180 lines (123 loc) · 9.54 KB

File metadata and controls

180 lines (123 loc) · 9.54 KB

Changelog

本项目遵循 语义化版本Keep a Changelog 格式。

3.x 及更早版本早于本 CHANGELOG 建立,详见 git 提交历史与 Releases 页。

[5.2.2] - 2026-09-18

Changed

  • 采样速度提升约 6 倍(单条命令 3.5s → 0.6s):原来判断"一条命令读完了"只能死等 3 秒静默 —— 11 条命令就是 35 秒/台,用户实测"太慢了"。现在从登录 banner 里认出 设备提示符(<SW-1> / [SW-1]),每读到输出末尾就是提示符时立刻收工; 认不出提示符(个别老设备)自动退回原来的静默判定,行为不变。 实测:2 条只读命令 7~8 秒 → 3.2 秒;12 台 × 11 命令的一轮从 ~70 秒降到 ~15 秒。

Tests

  • 275 项(+5):新增 tests/test_ring_prompt_speedup.py —— banner 提示符识别(华为 <...> / 系统视图 [...] / 空输入 / 表里形似提示符的行不误判)、看到提示符提前 收工(<0.5s 且通道关闭)、无提示符时退回静默判定。

[5.2.1] - 2026-09-18

Fixed

  • 连接通道不释放(真实故障)_run_commands_via_shellchannel.close() 原来只写在 成功路径上 —— 一旦命令报错 / 超时 / 被用户「停止」,通道就不释放,设备侧 VTY 会话被一直占着 (实测挂了 3 小时),后续再连同一台设备就被回 Unable to open channel。 现在改为 finally 必关,并给通道加 settimeout(2.0) 兜底防线程卡死。
  • 瞬时故障不再一次就放弃:面板 _ssh_run 对「通道被拒 / 被掐 / 超时」这类瞬时故障 换一条新连接自动重试一次(间隔 2.5 秒);认证失败等确定性错误不重试(避免无谓撞库)。

Changed

  • 连接类报错翻译成中文指导Unable to open channel → 提示"密码是对的,是设备侧会话被占满, 请确认只开了一个巡检工具 / 等 30 秒再试";认证失败 / 超时 / 端口拒绝各有对应说明。
  • 面板「两轮间隔」默认值 5 → 1 分钟(方便用小设备表快速测试,需要精确差分时自行调大)。

Tests

  • 270 项(+5):新增 tests/test_ring_panel_retry.py —— 瞬时故障重试一次成功 / 连续瞬时故障给友好文案 / 认证失败不重试 / 四类文案映射 / 瞬时判定。

Notes

  • 排查结论:用户侧「0/37 台有数据」的根因是同时开了两个工具实例(新版 + 旧版)互抢设备会话, 叠加上述连接不释放。请只保留一个实例运行。

[5.2.0] - 2026-09-18

面向"不会数通的人"的故障定位能力:告警不再是一堆散点,而是故障 + 故障设备 + 处理步骤

Added

  • 故障事件层 ring_events.py:把逐条技术告警聚合成"一个故障"
    • 故障卡(人话):故障设备 / 现象 / 判断 / 怎么处理(3 步内,含"先拔哪个口")
    • 根因打分:同设备同 MAC 多端口(★★★) · 跨设备同 MAC(★★★) · 设备自检环路日志(★★★) · 多口同速率广播(★★) · MAC 漂移(★) → 排出"最可能的故障点",第一条标「先处理这个」
    • 归并:同一设备的 风暴 + 环路日志 + MAC 证据 → 一个故障;单端口轻微广播 → 合并为一条"终端级"
  • D13 同设备 MAC 多端口冲突:同一 MAC(同 VLAN)出现在同设备 ≥2 个非聚合端口 → 单轮即可判定,直接点名"哪两个口之间被环接了"(环路最直接、最好处理的证据)
  • D4 环路组聚合:同设备上速率相近(±20%)的越阈端口合成一条"环路组"告警, 并自动区分"真环路(多口同速率)"与"终端噪声(单口小广播)"
  • D7 日志结构化:从 hwMflpVlanLoopPeriodicTrap / MAC/4/MAC_MOVE 等行抽取 MAC / VLAN / 端口 / 事件
  • 页签双视图:Ring Alert 默认「故障视图」(给操作员),可一键切「告警明细」(给技术)
  • 采样体检:逐条命令记录 字节数/行数/是否返回报错 → 一眼区分「命令没拿到数据」与「没发现环路」
  • 大表模式_run_commands_via_shell(..., silence_rounds=);页签可传更大静默窗口与超时,避免大表被截断
  • 告警新增字段:mac / vlan / ports / peer / fault_hint

Changed

  • HTML 报告置顶新增「🚨 故障清单」(人话卡片),技术明细表保留在下方
  • 状态栏:共 N 条告警 → M 个故障(严重 X)

Tests

  • 265 项(+13):D13 正/负例与聚合口排除、D4 分组、D7 抽取、故障聚合/打分/文本与 HTML 渲染
  • V4 = V5 去掉 D8/D9(11 条规则),阉割边界与"物理隔离"约定不变

[5.1.2] - 2026-09-17

清掉最后一个已知问题,至此「已知问题」清单为

Fixed

  • analyze_reports() 在报告路径打错 / 文件被挪走时会把 FileNotFoundError 整个抛给调用方, 与同函数对「解析不出设备」的处理风格不一致。现在降级为 warnings(GUI 只需展示提示,不必弹异常); 第二期报告读不到时同样降级,并退回单轮模式

Tests

  • 原 characterization 用例改为验证修复后的行为;用例总数 252 项,全绿

[5.1.1] - 2026-09-17

三个「不报错但结果错」的静默缺陷(由新增测试发现并修复)。

Fixed

  • rules.yaml 里改阈值完全不生效:文件用 thresholds: 嵌套写法,而引擎 _th() 只读顶层键 → 一律回退内置默认值(用户按文档调阈值实为无效,例:广播风暴阈值调到 100000 仍按 1000 判)。 现在顶层优先、其次读 thresholds 子键(两种写法都生效)
  • parse_huawei_temperature 取到的「温度」是槽位号:固定宽度槽位表里第一个 -20120 的数字被当成温度 → D11 温度告警永远拿 1N 度比较,真实过温静默漏报。现在按表头定位 Temperature(C) 列取值 (字符位置切片 → 词序号 → 启发式 三级降级)
  • 首次运行自动释放 rules.yaml 后没有回读 → 本次调用缺 signals,D7 日志关键字静默失效 (新装 exe 或删掉 rules.yaml 后才会遇到)。现在写出后立刻解析回读

Tests

  • 两个原 xfail 用例(温度列取值、释放后回读)转为正式断言;阈值用例从「锁定缺陷」改为「验证生效」
  • 测试总数 250 → 253

5.1.0 - 2026-09-17

工程化改造 + 修一个影响环路告警可用性的真 bug。

Added

  • LICENSE(MIT)
  • pyproject.toml:PEP 621 元数据 + 命令入口 net-inspect + ruff/pytest 配置, 现在可以 pip install -e .;依赖锁定 paramiko>=3.5,<4(老设备 ssh-rsa 的硬要求)
  • tests/:pytest 测试套件(判据引擎 12 条规则正负例、解析层华为两种排版、 编排层两轮差分、v5/ 镜像文件一致性)
  • GitHub Actions:.github/workflows/ci.yml(Windows 跑 pytest、Linux 跑 ruff)、 .github/workflows/build.yml(打 tag 或手动触发 → V3 与 V5 两个 exe artifact)
  • 本 CHANGELOG;README 增加徽章与「开发与测试」章节

Fixed

  • 环路告警页签「A. 在线两轮采样」连不上任何设备:调用宿主的 SSH 帮助函数时漏传 client 参数(_ssh_connect()就地连接、返回 None),导致每台设备都抛异常、两轮采样全是空数据; 而结果提示不管几轮都写「单轮时看不出…」,用户会以为「只跑了一轮」
  • 结果提示按「单轮快照 / 两轮差分」分开;新增采样数据统计(第 1 轮 / 第 2 轮各几台有数据); 失败原因(连接超时 / 认证失败 / 命令不被该平台支持)直接列进弹窗

Changed

  • 主程序新增 main() 入口与 __version____main__ 守卫改为调用 main()

5.0.0 - 2026-09-17

Added

  • 环路告警页签(Ring Alert):12 条判据 —— MAC 漂移 / STP 拓扑变化 / 根桥变更 / 广播与组播风暴 / 接口误码增长 / 链路震荡 / 厂家日志关键字 / BPDU 收发异常 / 跨设备关联 / 光衰 / 温度 / 电源状态; 支持在线两轮采样(工具自己连设备跑两遍做差分)与离线报告分析(1~2 份巡检 CSV)
  • V5(个人版,含全部功能)与 V3(基础版)两个入口

[3.4.0] - 2026-09-08

Changed

  • 153 个函数补齐中文 docstring(教学 / 交接版),AST 对比验证零逻辑改动

[3.3.0] - 2026-09-02

Added

  • 主动探测页签:ICMP 连通性 / DNS 解析与重定向 / DHCP 私接检测 / ARP 欺骗与跨网段判定 / VLAN 隔离检查

[3.2.0] - 2026-09-02

Added

  • 安全配置核查页签:DHCP snooping / DAI / DNS / VLAN 隔离 / 端口安全(只查询配置,不下发)

[3.1.0] - 2026-08-31

Added

  • 流量测试页签(UDP / ICMP / TCP / TCP SYN,内置接收端,实时 PPS 与带宽)
  • 攻击日志检测(SQLi / XSS / 路径穿越 / 命令注入 / WebShell / SSH 爆破,按行类型门控防误报)
  • IP 情报查询(ip-api,含机房 / 代理特征标记)

[3.0.0] - 2026-08-31

Added

  • 单机 / 批量 SSH 巡检(华为 / 新华三 / 锐捷 / 思科 / Linux),异常严重性着色与跳转
  • 按设备异常统计、设备清单 txt + Excel 双格式、导出报告