SwitchOps 交换机巡检

故障排查与安全

排查 SwitchOps 的配置、SSH、设备类型、命令、Excel 和 EXE 问题,并落实安全使用要求。

推荐排查顺序

遇到巡检失败时,按以下顺序检查:

  1. devices.yaml 是否能正常加载。
  2. 管理电脑能否到达目标 IP 和 SSH 端口。
  3. 账号密码能否通过系统 SSH 客户端登录。
  4. device_type 是否与设备平台匹配。
  5. 巡检账号是否有权执行对应查询命令。
  6. logs/app.log 中记录了什么错误。
  7. raw/ 是否保存了部分成功命令的回显。
  8. Excel 中是连接失败、解析未知还是达到告警阈值。

常见问题

现象可能原因处理方法
提示配置文件不存在未创建 devices.yaml,或 EXE 同级缺少 config/从示例复制设备文件;部署 EXE 时复制完整 config 目录。
提示 YAML 格式错误缩进错误、使用 Tab、引号不成对使用空格缩进,通过 YAML 编辑器检查语法。
提示设备清单为空顶层没有 devices,或列表为空确认使用 devices: 并至少配置一台设备。
提示缺少必填字段缺少名称、地址、设备类型、用户名或密码根据错误中的设备序号补齐字段。
没有可巡检的启用设备全部 enabled: false,或 --target 未精确匹配启用目标设备,核对名称/IP。
SSH 连接超时路由不通、端口被拦截、SSH 未启用或 device_type 不匹配测试 TCP 端口,检查 ACL、防火墙、SSH 服务和平台类型。
用户名或密码错误凭据错误、账号锁定或认证方式不兼容人工 SSH 登录验证,并检查 AAA/本地用户配置。
登录成功但命令失败巡检账号权限不足,或该型号命令不同在设备上人工执行命令,调整账号权限或只读命令模板。
提示禁止执行非只读命令命令前缀不在白名单或包含危险词移除命令;不要绕过只读安全校验。
CPU、内存显示未知设备回显与当前正则规则不一致查看 raw 文件,补充解析规则和测试。
板卡、电源、风扇或温度显示未知命令无对应信息或回显关键词未识别核对命令模板和原始回显;未知项会进入关注摘要。
端口台账为空interface brief 命令失败或格式无法解析检查原始回显,确认接口行包含可识别的 up/down 状态。
重点接口状态未知端口名错误、命令失败或回显不含状态字段使用完整接口名,并先执行单端口查询验证。
Excel 无法生成或保存文件被 Excel 占用、目录无写权限关闭同名文件,检查输出目录权限后重试。
查询结果为空本地关键字没有匹配任何回显行清空关键字重新查询,检查大小写以外的拼写和空格。
趋势提示数据库不存在尚未巡检,关闭了数据库,或数据库路径错误先巡检一次,确认 db_enabled: true,核对 --db。
EXE 双击无反应配置缺失、依赖加载失败或被安全软件拦截检查同级 config,查看终端安全日志;必要时用源码模式定位。

读取日志

默认日志路径:

outputs/YYYY-MM-DD/logs/app.log

重点搜索:

连接失败
命令执行失败
禁止执行非只读命令
历史数据库写入失败

日志不会主动输出明文密码,但可能包含设备名称、IP、命令、文件路径和错误详情,分享前仍需脱敏。

原始回显与解析问题

连接成功但报告字段为“未知”时,先查看:

outputs/YYYY-MM-DD/raw/<设备名称>_<IP>.txt

判断顺序:

  1. 对应命令是否成功执行。
  2. 回显是否完整,是否因分页或超时被截断。
  3. 当前型号的字段名称是否与解析器预期不同。
  4. 是否需要调整 commands.yaml 或 switch_ops/parser.py。

修改解析器后运行测试:

pytest tests/

新增规则应同时补充脱敏后的真实回显示例测试,避免修复一个型号后破坏其他型号。

安全使用清单

  • 使用专用、最小权限、只读的交换机巡检账号。
  • config/devices.yaml 不提交 Git,不放入公共网盘或共享群聊。
  • 管理电脑只允许从受控网络访问交换机管理地址。
  • 不在 commands.yaml 中加入保存、重启、删除、配置模式命令。
  • 新命令先在测试设备人工验证,再进行单台工具测试。
  • 控制并发,避免对设备 SSH 管理平面造成压力。
  • 保护 outputs/,因为原始回显可能暴露网络结构信息。
  • 定期清理或归档报告、日志和查询结果。
  • 发布 EXE 时保留源码版本、构建记录和文件摘要。
  • 修改安全校验代码时执行人工复核和回归测试。

已知边界

  • 当前仅内置华为 VRP 和华三 Comware 命令模板。
  • 解析基于常见回显正则,不同版本或型号可能出现“未知”。
  • 停止任务为软停止,不会强制中断已经开始的 SSH 会话。
  • CLI 历史趋势是文本表格,不是完整的监控或告警平台。
  • SQLite 写入失败不会阻止 Excel 生成,需要关注日志中的历史库警告。
  • 配置备份尚未开放,程序会拒绝读取当前或已保存配置的命令。
  • 工具不能替代 SNMP、Telemetry、日志平台或厂商网管系统的持续监控。

如果同一类设备持续出现兼容问题,建议保留脱敏后的原始回显、设备型号、软件版本、device_type 和失败命令,作为后续适配依据。