华为 & 思科统一交换机管理工具 | Unified Huawei & Cisco Switch Manager
一个开箱即用的网络设备管理工具。不是 Python 库,是运维可以直接用的瑞士军刀。
pip install netadmin# 一键备份所有设备
netadmin backup run
# 照猫画虎:从设备学配置,部署到另一台
netadmin learn 10.0.1.1 -o template.yaml
netadmin apply template.yaml -d 10.0.1.2
# 一键巡检 + 告警推送
netadmin check --all --notify╭──────────────────────────────────────────╮
│ netadmin — 华为 & 思科统一交换机管理工具 │
╰──────────────────────────────────────────╯
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 健康 192.168.1.1 │ │ 健康 192.168.1.2 │ │ 健康 192.168.1.3 │
│ CPU: 23% │ │ CPU: 67% ⚠ │ │ CPU: 5% │
│ Memory: 45% │ │ Memory: 82% ⚠ │ │ Memory: 22% │
│ Temp: 42°C │ │ Temp: 55°C ⚠ │ │ Temp: 38°C │
│ Log: 0 (clean) │ │ Log: 5 errors │ │ Log: 0 (clean) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
运行 python3 demo.py 查看更多演示效果。
| 功能 | 命令 | 说明 |
|---|---|---|
| 设备发现 | netadmin scan 192.168.1.0/24 |
Ping 扫描 + SSH Banner 识别厂商 |
| 连接测试 | netadmin connect <host> |
测试 SSH 连接并自动识别厂商 |
| 命令执行 | netadmin exec <host> "cmd" |
单台执行 |
| 批量执行 | netadmin exec-all "cmd" |
全部设备同时执行 |
| VLAN 管理 | netadmin vlan list/create/delete <host> |
查看/创建/删除 VLAN |
| 端口分配 | netadmin vlan assign <host> <port> <vlan> |
Access/Trunk 端口配置 |
| 接口状态 | netadmin interface list <host> |
接口 Up/Down 一目了然 |
| 配置备份 | netadmin backup run |
备份所有设备到本地 |
| 配置对比 | netadmin backup diff <id1> <id2> |
两次备份的差异对比 |
| 配置回滚 | netadmin backup restore <id> |
查看历史版本内容 |
| 定时备份 | netadmin backup schedule add -n daily -i daily |
crontab 驱动的自动备份 |
| Web 仪表盘 | netadmin web |
浏览器查看设备状态和备份 |
# 照猫:从一台配好的设备学习配置
netadmin learn 10.0.1.1 -o template.yaml
# 模板内容(自动脱敏,IP/名称用占位符替换)
cat template.yamldevice:
hostname: "{{HOSTNAME}}"
vendor: huawei
vlans:
- id: 10; name: office
- id: 20; name: voip
interfaces:
- name: GigabitEthernet0/0/1; mode: trunk; vlans: "10 20"
- name: GigabitEthernet0/0/2; mode: access; vlans: "10"
ntp:
servers: ["ntp.example.com"]# 画虎:把模板部署到目标设备
netadmin apply template.yaml -d 10.0.1.2
# 批量部署
netadmin apply template.yaml -d 10.0.1.2,10.0.1.3,10.0.1.4
# 试运行(不做实际变更)
netadmin apply template.yaml -d 10.0.1.2 --dry-run# 单台健康检查(CPU/内存/温度/日志错误)
netadmin check 10.0.1.1
# 全量巡检 + 异常告警推送
netadmin check --all --notify
# 安全合规审计(密码加密/SNMP/SSH/VTY/ACL/日志)
netadmin audit 10.0.1.1
# 审计 + 低分告警
netadmin audit --all --notify| 审计项 | 检查内容 |
|---|---|
| 密码加密 | 是否使用 cipher 或 service password-encryption |
| SNMP 安全 | 是否使用默认 community public |
| SSH 版本 | 是否禁用 SSH v1 |
| VTY 访问控制 | 管理口是否有 ACL 限制 |
| 登录 Banner | 是否有法律告警 |
| VLAN 1 风险 | 端口是否直接使用默认 VLAN 1 |
| 日志审计 | 日志是否开启 |
| NTP 同步 | 是否配置了 NTP |
# 每 30 分钟备份一次
netadmin backup schedule add -n "高频备份" -i "30m"
# 每天凌晨 2 点备份
netadmin backup schedule add -n "每日备份" -i "daily"
# 自定义 crontab
netadmin backup schedule add -n "工作日9点" -i "0 9 * * 1-5"
# 查看调度任务
netadmin backup schedule list
# 立即执行所有调度
netadmin backup schedule run在 config.yaml 中配置 Telegram Bot 或钉钉机器人后:
# 巡检异常自动推送到手机
netadmin check --all --notify
netadmin audit --all --notify支持渠道:
- Telegram Bot — 通过 BotFather 创建 bot,填入 token 和 chat_id
- 钉钉自定义机器人 — 支持加签安全方式
# 启动 Web 界面(默认 http://0.0.0.0:8099)
netadmin web
# 指定端口
netadmin web --port 8080 --host 127.0.0.1功能:
- 设备总览仪表盘(HTMX 实时刷新健康状态)
- 设备详情页(健康检查 + 安全审计 + 备份历史)
- 备份历史浏览(内容查看 + 差异对比)
- 调度任务管理(添加/启用/禁用/删除/立即执行)
# 安装
pip install netadmin
# 编辑设备清单
cp config.yaml example.yaml
vim config.yaml # 填入你的设备
# 连接测试
netadmin connect 10.0.1.1
# 全量备份
netadmin backup run
# 一键巡检
netadmin check --all
# 启动 Web 仪表盘
netadmin web支持通过环境变量传入密码,避免密码出现在命令行历史:
export NETADMIN_PASS_10_0_1_1=MySecretPass
netadmin connect 10.0.1.1| 厂商 | 型号系列 | Netmiko device_type |
|---|---|---|
| 华为 Huawei | S Series, CE Series, CloudEngine | huawei |
| 思科 Cisco | Catalyst, ISR, ASR, Nexus | cisco_ios |
理论上所有 Netmiko 支持的设备类型都可用,传
--device-type参数即可。
netadmin/
├── netadmin/
│ ├── cli.py # Click 命令定义
│ ├── connector.py # 华为/思科连接封装
│ ├── commands.py # 厂商命令映射
│ ├── backup.py # 配置备份 + Diff
│ ├── vlan.py # VLAN 管理
│ ├── interface.py # 接口状态
│ ├── learn.py # 照猫 — 配置学习
│ ├── apply.py # 画虎 — 配置部署
│ ├── scanner.py # 网段设备发现
│ ├── checker.py # 健康检查 + 安全审计
│ ├── config.py # 配置加载
│ ├── scheduler.py # 定时备份调度
│ ├── notifier.py # Telegram/钉钉告警
│ └── web/
│ ├── app.py # FastAPI 仪表盘
│ └── templates/ # Jinja2 模板
├── tests/
├── config.yaml # 设备清单模板
├── pyproject.toml
└── README.md
git clone https://github.com/yhan1203/netadmin.git
cd netadmin
pip install -e ".[dev,web]"
pytestMIT
Made by @yhan1203 — 如果好用,点个 Star ⭐
关键词: 网络自动化 · 华为交换机管理 · 思科交换机管理 · 配置备份 · 配置克隆 · 安全审计 · 网络设备发现 · CLI 运维工具 · Web 仪表盘 · 定时备份 · 告警通知