智能巡检系统 (Intelligent Inspection System)源代码开源了
项目简介
智能巡检系统是一套面向运维场景的自动化巡检管理平台,支持主机、数据库、中间件、安全等多维度巡检。系统提供资源纳管、巡检项管理、手动/批量巡检、自动化定时任务、历史报告查看与合并等功能,帮助运维团队高效完成日常巡检工作,及时发现系统潜在风险。
本系统设计轻量、易部署,可运行于 Linux、麒麟等国产操作系统,并支持打包为独立的可执行文件,方便离线内网环境使用。
核心功能
| 功能模块 | 说明 |
|---|---|
| 资源纳管 | 统一管理主机(SSH)和数据库(MySQL)资源,支持增删改查、连接测试 |
| 巡检项管理 | 内置丰富的巡检项(系统信息、安全检测、中间件、数据库等),支持自定义命令扩展 |
| 手动巡检 | 选择资源与巡检项,实时执行并生成 Word 格式报告 |
| 批量巡检 | 通过 Excel 模板批量导入主机或数据库,自动执行并汇总结果 |
| 自动化任务 | 基于 Cron 表达式配置定时巡检,自动执行并记录历史 |
| 巡检历史 | 查看所有巡检记录,支持单份报告下载和多份报告合并 |
| 用户认证 | 支持用户登录、权限管理(管理员/普通用户),保护敏感操作 |
技术栈
- 后端:Flask (Python 3.6+)
- 数据库:SQLite(可迁移至 MySQL/PostgreSQL)
- 任务调度:APScheduler
- 远程连接:Paramiko (SSH)、PyMySQL
- 报告生成:python-docx、openpyxl
- 前端:Bootstrap 5、jQuery、Font Awesome
- 打包工具:PyInstaller
快速开始
环境要求
- 操作系统:Linux (CentOS 7/8、麒麟 V10、Ubuntu 等)
- Python 3.6 或更高版本
- 能够 SSH 连接目标主机,或连接 MySQL 数据库
安装步骤
-
克隆代码
git clone https://github.com/Zhh9126/InspectionSystemV5.git cd InspectionSystemV5 -
安装依赖
pip install -r requirements.txt如果网络受限,可使用离线安装方式(下载 wheel 包后本地安装)。
-
初始化数据库
首次运行会自动创建 SQLite 数据库文件inspection.db,并生成内置巡检项和默认管理员账号。 -
启动服务
python app.py默认监听
http://0.0.0.0:5000,可通过--host和--port调整。 -
访问系统
浏览器打开http://服务器IP:5000,使用以下默认账号登录:- 用户名:
admin - 密码:
admin123
请务必在首次登录后修改密码!
- 用户名:
使用指南
资源纳管
- 添加主机:填写 IP、SSH端口(默认22)、用户名、密码
- 添加数据库:选择类型(MySQL)、填写主机、端口、用户名、密码、数据库名
- 点击“测试连接”验证凭据是否有效
巡检项管理
- 内置项已自动创建,可直接使用或编辑命令
- 自定义项需填写类别、名称、描述及具体的 Shell 命令或 SQL 语句
执行手动巡检
- 选择巡检类别(主机/数据库等)
- 选择具体资源
- 勾选需要执行的巡检项(支持按类别筛选)
- 填写巡检人和运维单位
- 点击“开始巡检”,完成后自动生成并下载 Word 报告
批量巡检
- 下载对应的 Excel 模板(主机或数据库)
- 按模板格式填写资源信息
- 上传文件,选择巡检项和巡检人/单位
- 系统自动执行,并显示结果汇总
设置定时任务
- 点击“新建定时任务”
- 填写任务名称、Cron 表达式(例如
0 2 * * *表示每天凌晨2点) - 选择资源类型(主机/数据库),从列表中勾选目标资源
- 选择需要执行的巡检项(支持按类别筛选)
- 保存后任务将自动调度执行,历史记录可在“巡检历史”中查看
查看历史与合并报告
- 历史记录按时间倒序排列,状态列显示成功/失败
- 可勾选多份报告,点击“合并选中报告”生成合并版 Word 文档
打包为独立可执行文件
系统支持使用 PyInstaller 打包为单文件,方便内网离线部署。
pyinstaller --clean --onefile \
--add-data "templates:templates" \
--add-data "static:static" \
--hidden-import paramiko \
--hidden-import cryptography \
--hidden-import apscheduler \
--hidden-import apscheduler.triggers.interval \
--hidden-import apscheduler.triggers.cron \
--hidden-import flask \
--hidden-import flask_sqlalchemy \
--hidden-import openpyxl \
--hidden-import docx \
--hidden-import pymysql \
--hidden-import psutil \
--collect-all cryptography \
--collect-all jinja2 \
--name InspectionSystem \
app.py
打包后,可执行文件位于 dist/ 目录,可直接拷贝到任意 Linux 环境运行。
注意:若需在 ARM 架构(如麒麟)上运行,请在 ARM 机器上执行打包,或使用对应的交叉编译工具链。
项目结构
inspection-system/
├── app.py # Flask 主应用
├── models.py # 数据库模型
├── inspection_engine.py # 巡检执行引擎
├── tasks.py # 定时任务调度器
├── utils.py # 工具函数(SSH、Excel、Word 等)
├── requirements.txt # Python 依赖
├── templates/ # HTML 模板
│ ├── base.html
│ ├── login.html
│ ├── index.html
│ ├── resources.html
│ ├── inspection_items.html
│ ├── manual_inspect.html
│ ├── batch_inspect.html
│ ├── scheduled_tasks.html
│ ├── history.html
│ └── user_manage.html
├── static/ # 静态资源(CSS、JS、字体、Excel模板)
│ ├── css/
│ ├── js/
│ └── template/
└── reports/ # 生成的报告存储目录(自动创建)
常见问题
1. 报告生成后内容为空
- 检查主机 SSH 连接是否正常(可在资源纳管中测试)
- 查看日志文件
/tmp/os_inspector_debug.log确认命令执行输出 - 确认巡检项的命令是否为空(内置项默认有命令,若被清空请编辑恢复)
2. 定时任务未执行
- 检查 Cron 表达式是否正确
- 查看后台日志是否有异常(APScheduler 会输出任务加载和执行信息)
- 确认任务状态为“启用”
3. 批量上传 Excel 失败
- 检查模板格式是否与下载的一致
- 主机模板必须包含 IP、SSH端口、用户、密码等列
- 数据库模板必须包含名称、主机、端口、用户名、密码等列
4. 合并报告报错
- 需要至少选择 2 份成功生成的报告
- 确保选中的报告文件未被删除或移动
5. 运行打包程序后界面样式丢失
- 这是因为内网无法访问外网 CDN,请下载 Bootstrap、jQuery 和 Font Awesome 的本地文件,放置在
static/目录下,并修改模板中的引用路径。
安全建议
- 修改默认管理员密码
- 生产环境将
app.config['SECRET_KEY']替换为随机字符串 - 使用 HTTPS 反向代理(如 Nginx)部署
- 定期备份
inspection.db数据库和reports/目录
贡献指南
欢迎提交 Issue 和 Pull Request。请确保代码符合 PEP8 规范,并添加必要的注释。
- Fork 本仓库
- 创建您的特性分支 (
git checkout -b feature/AmazingFeature) - 提交您的修改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 打开一个 Pull Request
许可证
本项目使用 MIT 许可证,详情请见 LICENSE 文件。
联系与支持
如有问题或建议,请通过 Issue 与我们联系,或发送邮件至项目维护者。
感谢使用智能巡检系统! 希望它能为您的工作带来便利。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)