由于某些原因,此项目已放弃继续开发。目前已经把框架搭建完毕,只需添加功能即可,详情请参阅项目进展。
AutoDevOpsSystem/
├── core/ # 核心功能模块
│ ├── __init__.py
│ ├── business/ # 业务逻辑层
│ │ ├── __init__.py
│ │ ├── db_task_queue.py # 数据库任务队列
│ │ └── device_monitor.py # 设备监控
│ ├── services/ # 服务层
│ │ ├── __init__.py
│ │ └── device_service.py # 设备服务
│ └── models/ # 数据模型
│ └── __init__.py
├── modules/ # 功能模块
│ ├── __init__.py
│ ├── dhcp_configuration/ # DHCP配置
│ │ ├── __init__.py
│ │ ├── dhcp_configuration.py # DHCP配置器
│ │ └── dhcp_config.py # DHCP配置适配器
│ ├── Batch_configuration_of_addresses/ # 批量地址配置
│ ├── route_configuration/ # 路由配置
│ ├── acl_nat_spanning_tree_configuration/ # ACL/NAT/生成树配置
│ ├── network_monitor/ # 网络监控
│ ├── Integral_Network_Arrangement/ # 网络整体规划
│ ├── Query_device_information/ # 设备信息查询
│ ├── vpn_deploy/ # VPN部署
│ ├── internet_traffic_monitor/ # 互联网流量监控
│ └── final_approval/ # 最终审批模块
├── api/ # API层
│ ├── __init__.py
│ ├── app.py # Flask应用入口
│ ├── task_adapter.py # 任务适配器
│ ├── routes/ # API路由
│ │ ├── __init__.py
│ │ ├── devices.py # 设备API
│ │ ├── dashboard.py # 仪表板API
│ │ ├── tasks.py # 任务API
│ │ └── dhcp.py # DHCP配置API
│ ├── events/ # WebSocket事件处理
│ │ └── dashboard_events.py # 仪表板事件
│ ├── utils/ # API工具函数
│ │ └── __init__.py
│ ├── static/ # 静态资源
│ └── templates/ # HTML模板
├── shared/ # 共享组件
│ ├── __init__.py
│ ├── data_store.py # 数据存储
│ ├── event_bus.py # 事件总线
│ ├── db/ # 数据库访问层
│ │ ├── __init__.py
│ │ ├── db_manager.py # 数据库管理器
│ │ ├── device_repository.py # 设备仓库
│ │ └── task_repository.py # 任务仓库
│ └── websocket/ # WebSocket组件
│ ├── __init__.py
│ ├── server.py # WebSocket服务器
│ └── handlers.py # WebSocket处理程序
├── tasks/ # 任务管理
│ ├── __init__.py
│ ├── task_manager.py # 任务管理器
│ ├── approval.py # 审批流程
│ └── workflow.py # 工作流定义
├── config/ # 配置文件目录
│ ├── database.py # 数据库配置
│ └── settings.py # 应用全局配置
├── logs/ # 日志目录
├── tools/ # 工具和辅助脚本
├── main.py # PyQt5应用入口
├── run_web.py # Web应用启动脚本
└── run_app.py # 应用启动脚本
- DHCP配置 - 配置DHCP服务器功能,支持地址池管理、IP分配、DNS设置和域名配置
- 批量地址配置 - 批量配置设备IP地址和VLAN信息,支持按VLAN段和端口段自动分配IP地址
- 路由配置 - 配置静态和动态路由,支持RIP、OSPF、BGP等路由协议配置
- ACL/NAT/生成树配置 - 配置访问控制列表、网络地址转换和生成树协议,支持防火墙规则管理
- 网络监控 - 监控网络设备状态和性能,支持CPU/内存使用率、接口流量等指标监控
- 网络整体规划 - 进行网络设计和规划,提供网络拓扑可视化和连通性检测
- 设备信息查询 - 查询网络设备信息,支持设备清单管理和配置信息查询
- VPN部署 - 部署和配置VPN连接,支持IPSec和SSL VPN配置
- 互联网流量监控 - 监控网络流量,支持流量统计和异常流量检测
- 最终审批 - 管理配置变更的审批流程,确保网络配置变更的安全性和合规性
- 设备管理 - 管理网络设备的配置和状态信息,提供设备增删改查功能
- 任务管理 - 管理网络配置任务,支持任务创建、审批、执行和状态跟踪
- 通信服务 - 提供与网络设备的通信功能,支持Telnet和SSH协议
- 数据存储 - 管理应用数据的持久化存储,包括设备信息、任务状态等
- 事件通知 - 提供实时事件通知机制,支持WebSocket和事件总线
系统采用前后端分离的架构设计:
-
前端:
- PyQt5桌面应用 - 提供完整的网络管理功能
- Web界面 - 提供基于浏览器的访问方式
-
后端:
- Flask Web服务 - 提供API接口和Web界面
- WebSocket服务 - 提供实时数据更新和通知
- 任务管理器 - 处理网络配置任务的执行和状态跟踪
- 数据库存储 - 保存设备、任务和配置数据
-
通信模式:
- 当PyQt应用启动时,它会连接到Flask应用并接收任务通知
- 当PyQt应用没有运行时,任务可通过Web界面提交并保存在数据库中
- 任务执行状态通过WebSocket实时通知给前端界面
相比于仅有PyQt5桌面应用或仅有Web界面的网络自动化系统,本系统的双界面架构具有以下显著优势:
- 多终端访问:管理员可以在安装了PyQt5桌面应用的工作站上进行操作,也可以通过任何浏览器进行远程访问
- 不同场景适配:办公室工作可使用功能丰富的桌面应用,而现场维护或紧急情况下可通过手机浏览器访问Web界面
- 角色分离:网络架构师可使用功能完整的桌面应用进行复杂配置,一线技术人员可通过Web界面执行日常任务
- 服务持续性:即使PyQt5应用未启动或关闭,Web服务仍然运行,确保任务队列持续处理
- 任务持久化:所有配置任务存储在数据库中,不依赖于单一界面应用的运行状态
- 灾备能力:当主要操作界面不可用时,可立即切换到备用界面继续工作
- 分布式部署:Web服务可以部署在服务器上,而PyQt5客户端可以部署在多个工作站上
- 多用户协作:多名工程师可同时通过不同界面处理不同任务
- 集中审批:网络管理员可通过Web界面审批由不同工程师创建的任务
- 权限分级:可针对Web界面和桌面应用设置不同级别的访问权限
- 操作可追踪:所有操作记录集中存储,无论来自哪个界面
- 业务逻辑复用:核心逻辑在后端实现,前端界面仅负责展示和交互
- 分离的关注点:数据处理、业务逻辑和用户界面明确分离
- 性能优化:资源密集型操作在服务器端执行,减轻客户端负担
- 实时通知:基于WebSocket的实时通知机制,任务状态变更即时同步到所有前端
- 扩展性:易于添加新的前端界面(如移动应用)而无需修改核心业务逻辑
- 渐进式部署:可以先部署基础的Web服务,再逐步推广桌面应用
- 独立升级:Web服务和桌面应用可以独立升级,互不影响
- 集中管理:配置和数据在服务器端集中存储,简化备份和恢复
- 插件化架构:功能模块可以独立开发和部署,实现按需加载
此架构特别适合企业级网络管理场景,既满足了专业网络工程师对功能强大的桌面工具的需求,又满足了管理层对远程访问和移动操作的需求,同时通过集中的后端服务确保了数据的一致性和系统的高可用性。
- Python 3.8+
- PyQt5
- Flask 2.0+
- MySQL 5.7+
- 网络设备支持Telnet/SSH管理接口
-
配置环境:
python -m venv venv venv\Scripts\activate # Windows source venv/bin/activate # Linux/Mac pip install -r requirements.txt
-
配置数据库:
- 修改
config/database.py
中的数据库连接信息 - 初始化数据库表结构
- 修改
-
启动选项:
- 启动Web应用:
python run_web.py
- 启动PyQt5桌面应用:
python main.py
- 启动精简版应用:
python run_app.py
- 启动Web应用:
-
访问Web界面:
- 浏览器访问:
http://localhost:5000
- 浏览器访问:
系统默认使用基本认证方式,生产环境部署时建议:
- 启用HTTPS
- 加强密码策略
- 实施IP访问限制
- 定期审计操作日志
目前系统处于开发阶段(V1.0),已完成核心架构和部分功能模块的开发。系统架构已经稳定,Web服务和PyQt5桌面应用可以正常协同工作。
-
核心架构
- ✅ 双界面架构(PyQt5桌面应用与Web界面)
- ✅ Flask Web服务与API
- ✅ 数据库存储与访问层
- ✅ WebSocket实时通知机制
- ✅ 任务管理和执行系统
- ✅ 事件总线和通信机制
-
Web功能
- ✅ 设备管理界面
- ✅ 任务创建和管理
- ✅ 仪表板数据展示
- ✅ 任务审批流程
-
后端服务
- ✅ 任务持久化存储
- ✅ 任务状态跟踪
- ✅ 设备信息管理
-
网络监控模块(只做了仪表盘)
- 🔄 设备状态监控
- 🔄 性能指标收集
- 🔄 告警机制
-
路由配置模块
- 🔄 静态路由配置
- 🔄 动态路由协议支持
-
其他配置模块
-
设备连接适配器
- 🔄 扩展对思科、华三设备的支持(目前只有少数模块支持)
- 🔄 SSH连接优化(可以不做)
1.PyQt应用已经有login界面,但是没有应用 2.Web界面没有实施登录措施 3.PyQt应用面向管理员权限更高
1.目前PyQ应用和Web都可做界面优化 2.网络拓扑模块中,拓扑图可优化,连通性测试还需要调试