SwitchOps 交换机巡检

快速开始

从获取源码、安装 Python 依赖到完成第一次交换机巡检。

运行方式

SwitchOps 提供两种运行方式:

方式适合人群入口
图形界面日常值班和一线运维人员python main.py 或打包后的 EXE
命令行开发调试、脚本调用和批处理python cli.py ...

第一次使用建议先用源码运行 GUI,确认设备配置和 SSH 连接正常后,再考虑打包为 Windows EXE。

环境要求

  • Python 3.10 或更高版本。
  • 可以访问交换机管理 IP 的 Windows、macOS 或 Linux 电脑。
  • 交换机已经启用 SSH,默认端口为 22。
  • 巡检账号能够执行所需的 display 或 show 查询命令。
  • Windows 打包 EXE 时需要 PyInstaller,项目依赖中已经包含。

获取源码

git clone https://git.95669.com/dnxk/switch-ops-netmiko.git
cd switch-ops-netmiko

如果代码通过其他开源镜像分发,也可以直接下载源码压缩包并解压到本地目录。

创建虚拟环境并安装依赖

Windows PowerShell

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

如果 PowerShell 阻止激活脚本,可以直接使用虚拟环境中的 Python:

.\.venv\Scripts\python.exe -m pip install -r requirements.txt
.\.venv\Scripts\python.exe main.py

macOS 或 Linux

python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -r requirements.txt

Linux 如果缺少 Tkinter,需要使用系统包管理器安装对应的 Tk 支持;只使用 CLI 时不需要打开图形界面。

创建设备配置

真实设备清单使用 config/devices.yaml。先复制示例文件:

Copy-Item config\devices.example.yaml config\devices.yaml

打开 config/devices.yaml,先保留一台测试交换机并填写真实信息:

config/devices.yaml
devices:
  - name: "测试交换机"
    host: "192.168.1.1"
    port: 22
    vendor: "huawei"
    model: "S5720"
    device_type: "huawei"
    username: "inspect_user"
    password: "请替换为真实密码"
    secret: ""
    need_super: false
    role: "access"
    location: "一楼弱电间"
    enabled: true

完整字段说明见设备清单配置。

config/devices.yaml 包含真实账号密码,已经被项目的 .gitignore 忽略。不要把它提交到 Git、发送到公共群聊或打包进公开发布物。

检查网络和 SSH

在 Windows PowerShell 中确认管理地址和 SSH 端口可达:

Test-NetConnection 192.168.1.1 -Port 22

在 macOS 或 Linux 中可以使用:

nc -vz 192.168.1.1 22

端口可达并不代表账号一定可用。建议先用系统 SSH 客户端登录一次,确认账号、密码和权限:

ssh inspect_user@192.168.1.1

启动图形界面

python main.py

在窗口中依次完成:

  1. 确认“配置文件”指向 config/devices.yaml。
  2. 点击“加载设备”,检查名称、IP、厂商和状态是否正确。
  3. 首次测试只勾选一台非核心设备。
  4. 点击“巡检选中设备”。
  5. 观察进度和日志,等待完成提示。
  6. 点击“打开输出目录”查看报告。

使用 CLI 完成首次巡检

python cli.py inspect --config config/devices.yaml --target 192.168.1.1

执行完成后会显示成功数、失败数和 Excel 报告路径。

检查输出

默认输出位于:

outputs/
├── history.db
└── YYYY-MM-DD/
    ├── logs/
    │   └── app.log
    ├── queries/
    ├── raw/
    │   └── 测试交换机_192.168.1.1.txt
    └── reports/
        └── 巡检汇总_YYYY-MM-DD_HHMMSS.xlsx

第一次运行后建议检查:

  • raw/ 中是否保存了每条巡检命令的原始回显。
  • Excel 中设备名称、版本、CPU、内存和接口数据是否符合设备实际情况。
  • logs/app.log 中是否存在命令超时、权限不足或解析关注项。
  • outputs/history.db 是否已经生成。