SwitchOps 交换机巡检

Windows 打包部署

使用 PyInstaller 构建 SwitchOps 单文件 EXE,并按推荐目录交付配置和输出数据。

构建环境

Windows EXE 应在 Windows 系统中构建。准备:

  • Python 3.10 或更高版本;
  • 项目完整源码;
  • 能够安装 requirements.txt 依赖的网络或离线包;
  • 足够的磁盘空间用于 PyInstaller 的 build/ 和 dist/ 目录。

安装构建依赖

在项目根目录打开 PowerShell:

py -3 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -r requirements.txt

确认 PyInstaller 可用:

pyinstaller --version

执行打包

运行项目提供的脚本:

.\build_exe.bat

脚本使用的关键参数:

参数作用
--onefile生成单文件 EXE。
--windowed运行 GUI 时不额外打开控制台窗口。
--name输出名称为 SwitchOps巡检工具。
--icon存在 assets/app.ico 时设置程序图标。
--add-data将构建时的 config、assets 作为打包数据加入。

构建产物位于:

dist\SwitchOps巡检工具.exe

推荐交付目录

SwitchOps/
├── SwitchOps巡检工具.exe
├── config/
│   ├── devices.yaml
│   ├── commands.yaml
│   └── settings.yaml
└── outputs/
当前程序在 EXE 模式下从 EXE 所在目录读取 config/。交付时必须把三个 YAML 配置文件放在 EXE 同级的 config 目录中,不能只复制 EXE。

outputs/ 可以不预先创建,程序首次运行时会自动创建;提前创建有助于设置访问控制和备份策略。

首次部署检查

  1. 将完整目录复制到目标 Windows 电脑的固定位置,例如 D:\SwitchOps。
  2. 从示例创建 config\devices.yaml,填写一台测试设备。
  3. 确认 commands.yaml 和 settings.yaml 存在。
  4. 确认当前用户对程序目录和输出目录有读写权限。
  5. 检查到交换机管理 IP 的路由和 TCP 22 端口。
  6. 双击 EXE,加载设备清单。
  7. 先巡检单台设备,再执行全量巡检。
  8. 检查原始回显、Excel、日志和 history.db。

配置与版本更新

升级 EXE 时建议:

  1. 退出正在运行的程序。
  2. 备份整个 config/ 和 outputs/history.db。
  3. 用新版本替换 EXE。
  4. 对比新旧 commands.yaml、settings.yaml,合并新增配置项。
  5. 不要用示例文件覆盖真实 devices.yaml。
  6. 使用一台测试设备完成回归验证。

配置文件与 EXE 分开管理,便于更新程序时保留设备清单,也避免把真实账号密码硬编码到发布物中。

杀毒软件误报

PyInstaller 单文件程序会在运行时释放组件,部分安全软件可能产生误报。建议:

  • 从可信构建机生成发布物并记录源码版本。
  • 对发布物计算并留存 SHA-256 摘要。
  • 保留依赖清单和构建日志,便于安全人员复核。
  • 由终端安全管理员按流程检测后加入白名单。
  • 不要直接关闭杀毒软件或让普通用户自行绕过安全策略。

PowerShell 计算摘要:

Get-FileHash .\dist\SwitchOps巡检工具.exe -Algorithm SHA256

源码模式部署

如果需要使用 CLI、计划任务或更方便地调试日志,可以保留源码和虚拟环境:

SwitchOps/
├── .venv/
├── switch_ops/
├── config/
├── outputs/
├── cli.py
├── gui.py
├── main.py
└── requirements.txt

源码模式更适合运维管理机;单文件 EXE 更适合固定功能的一线桌面交付。