Skip to content

erliu8/Network_AutoDevOpsSystem-V1.0

Repository files navigation

Network_AutoDevOpsSystem V1.0

由于某些原因,此项目已放弃继续开发。目前已经把框架搭建完毕,只需添加功能即可,详情请参阅项目进展。

项目结构

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             # 应用启动脚本

模块功能说明

  1. DHCP配置 - 配置DHCP服务器功能,支持地址池管理、IP分配、DNS设置和域名配置
  2. 批量地址配置 - 批量配置设备IP地址和VLAN信息,支持按VLAN段和端口段自动分配IP地址
  3. 路由配置 - 配置静态和动态路由,支持RIP、OSPF、BGP等路由协议配置
  4. ACL/NAT/生成树配置 - 配置访问控制列表、网络地址转换和生成树协议,支持防火墙规则管理
  5. 网络监控 - 监控网络设备状态和性能,支持CPU/内存使用率、接口流量等指标监控
  6. 网络整体规划 - 进行网络设计和规划,提供网络拓扑可视化和连通性检测
  7. 设备信息查询 - 查询网络设备信息,支持设备清单管理和配置信息查询
  8. VPN部署 - 部署和配置VPN连接,支持IPSec和SSL VPN配置
  9. 互联网流量监控 - 监控网络流量,支持流量统计和异常流量检测
  10. 最终审批 - 管理配置变更的审批流程,确保网络配置变更的安全性和合规性

核心业务功能

  1. 设备管理 - 管理网络设备的配置和状态信息,提供设备增删改查功能
  2. 任务管理 - 管理网络配置任务,支持任务创建、审批、执行和状态跟踪
  3. 通信服务 - 提供与网络设备的通信功能,支持Telnet和SSH协议
  4. 数据存储 - 管理应用数据的持久化存储,包括设备信息、任务状态等
  5. 事件通知 - 提供实时事件通知机制,支持WebSocket和事件总线

系统架构

系统采用前后端分离的架构设计:

  1. 前端

    • PyQt5桌面应用 - 提供完整的网络管理功能
    • Web界面 - 提供基于浏览器的访问方式
  2. 后端

    • Flask Web服务 - 提供API接口和Web界面
    • WebSocket服务 - 提供实时数据更新和通知
    • 任务管理器 - 处理网络配置任务的执行和状态跟踪
    • 数据库存储 - 保存设备、任务和配置数据
  3. 通信模式

    • 当PyQt应用启动时,它会连接到Flask应用并接收任务通知
    • 当PyQt应用没有运行时,任务可通过Web界面提交并保存在数据库中
    • 任务执行状态通过WebSocket实时通知给前端界面

系统架构优势

相比于仅有PyQt5桌面应用或仅有Web界面的网络自动化系统,本系统的双界面架构具有以下显著优势:

1. 灵活的操作方式

  • 多终端访问:管理员可以在安装了PyQt5桌面应用的工作站上进行操作,也可以通过任何浏览器进行远程访问
  • 不同场景适配:办公室工作可使用功能丰富的桌面应用,而现场维护或紧急情况下可通过手机浏览器访问Web界面
  • 角色分离:网络架构师可使用功能完整的桌面应用进行复杂配置,一线技术人员可通过Web界面执行日常任务

2. 增强的系统可靠性

  • 服务持续性:即使PyQt5应用未启动或关闭,Web服务仍然运行,确保任务队列持续处理
  • 任务持久化:所有配置任务存储在数据库中,不依赖于单一界面应用的运行状态
  • 灾备能力:当主要操作界面不可用时,可立即切换到备用界面继续工作
  • 分布式部署:Web服务可以部署在服务器上,而PyQt5客户端可以部署在多个工作站上

3. 协作与权限管理

  • 多用户协作:多名工程师可同时通过不同界面处理不同任务
  • 集中审批:网络管理员可通过Web界面审批由不同工程师创建的任务
  • 权限分级:可针对Web界面和桌面应用设置不同级别的访问权限
  • 操作可追踪:所有操作记录集中存储,无论来自哪个界面

4. 技术优势

  • 业务逻辑复用:核心逻辑在后端实现,前端界面仅负责展示和交互
  • 分离的关注点:数据处理、业务逻辑和用户界面明确分离
  • 性能优化:资源密集型操作在服务器端执行,减轻客户端负担
  • 实时通知:基于WebSocket的实时通知机制,任务状态变更即时同步到所有前端
  • 扩展性:易于添加新的前端界面(如移动应用)而无需修改核心业务逻辑

5. 部署和维护便利

  • 渐进式部署:可以先部署基础的Web服务,再逐步推广桌面应用
  • 独立升级:Web服务和桌面应用可以独立升级,互不影响
  • 集中管理:配置和数据在服务器端集中存储,简化备份和恢复
  • 插件化架构:功能模块可以独立开发和部署,实现按需加载

此架构特别适合企业级网络管理场景,既满足了专业网络工程师对功能强大的桌面工具的需求,又满足了管理层对远程访问和移动操作的需求,同时通过集中的后端服务确保了数据的一致性和系统的高可用性。

系统要求

  • Python 3.8+
  • PyQt5
  • Flask 2.0+
  • MySQL 5.7+
  • 网络设备支持Telnet/SSH管理接口

部署说明

  1. 配置环境:

    python -m venv venv
    venv\Scripts\activate  # Windows
    source venv/bin/activate  # Linux/Mac
    pip install -r requirements.txt
    
  2. 配置数据库:

    • 修改 config/database.py 中的数据库连接信息
    • 初始化数据库表结构
  3. 启动选项:

    • 启动Web应用:python run_web.py
    • 启动PyQt5桌面应用:python main.py
    • 启动精简版应用:python run_app.py
  4. 访问Web界面:

    • 浏览器访问:http://localhost:5000

安全说明

系统默认使用基本认证方式,生产环境部署时建议:

  1. 启用HTTPS
  2. 加强密码策略
  3. 实施IP访问限制
  4. 定期审计操作日志

项目进展

当前开发状态

目前系统处于开发阶段(V1.0),已完成核心架构和部分功能模块的开发。系统架构已经稳定,Web服务和PyQt5桌面应用可以正常协同工作。

已完成功能

  1. 核心架构

    • ✅ 双界面架构(PyQt5桌面应用与Web界面)
    • ✅ Flask Web服务与API
    • ✅ 数据库存储与访问层
    • ✅ WebSocket实时通知机制
    • ✅ 任务管理和执行系统
    • ✅ 事件总线和通信机制
  2. Web功能

    • ✅ 设备管理界面
    • ✅ 任务创建和管理
    • ✅ 仪表板数据展示
    • ✅ 任务审批流程
  3. 后端服务

    • ✅ 任务持久化存储
    • ✅ 任务状态跟踪
    • ✅ 设备信息管理

进行中的功能(Web界面)

  1. 网络监控模块(只做了仪表盘)

    • 🔄 设备状态监控
    • 🔄 性能指标收集
    • 🔄 告警机制
  2. 路由配置模块

    • 🔄 静态路由配置
    • 🔄 动态路由协议支持
  3. 其他配置模块

  4. 设备连接适配器

    • 🔄 扩展对思科、华三设备的支持(目前只有少数模块支持)
    • 🔄 SSH连接优化(可以不做)

登录和权限问题

1.PyQt应用已经有login界面,但是没有应用 2.Web界面没有实施登录措施 3.PyQt应用面向管理员权限更高

界面优化

1.目前PyQ应用和Web都可做界面优化 2.网络拓扑模块中,拓扑图可优化,连通性测试还需要调试

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy