Skip to content

Wangyegithubv/linuxcheck

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

操作系统批量巡检工具

简介

本工具专为系统运维人员设计,用于批量巡检多台 Linux 服务器,生成专业的 Word 巡检报告。它支持并发 SSH 连接、自动探测主机信息、深度中间件检查(Nginx/Redis/Kafka/ES/Tomcat/MySQL/Oracle/达梦等),并内置密码加密、防卡死机制和详细的调试日志,帮助您高效完成系统健康度评估。

主要功能

  • Excel 模板自动生成:一键生成标准化主机清单模板,支持主机名自动探测、密码加密存储。
  • 批量并发巡检:支持多线程 SSH 并发执行(默认 3 线程),大幅缩短巡检总时间。
  • 全面检查项
    • 系统基本信息(版本、内核、CPU、内存、运行时间)
    • 环境变量安全(PATH 危险/可写路径、敏感变量、配置文件权限)
    • 僵尸进程检测
    • 系统句柄分析(全局限制、进程级 TOP 10)
    • 磁盘 I/O 统计
    • 基础端口与深度中间件巡检(通过进程名+端口双重识别)
    • CPU/内存/磁盘性能分析(含 TOP 进程)
    • 关键服务状态与系统更新检查(跳过易卡死的 yum check-update
    • 日志错误与登录失败记录
    • 定时任务摘要与可疑任务识别(wget/curl/bash -i 等)
    • 网络连接状态(使用 ss 命令,无需 netstat)
  • Word 专业报告:自动生成图文并茂的报告,包含概览、各检查项表格、状态着色(正常/警告/危险)、进度条、巡检总结与建议。
  • 安全增强:模板中的密码采用 PBKDF2 派生密钥加密,避免明文泄露。
  • 防卡死设计:所有远程命令均带超时控制,避免因网络或命令挂起导致巡检阻塞。
  • 双日志系统:INFO 级主日志 + DEBUG 级详细日志(/tmp/os_inspector_debug.log),便于故障排查。

系统要求

  • Python 版本:3.6 或更高
  • 支持平台:Windows(运行工具端) / Linux(被巡检端)
  • 依赖库(自动检测,缺失会提示安装):
    • paramiko – SSH 连接
    • python-docx – 生成 Word 报告
    • openpyxl – 读写 Excel 模板
    • cryptography – 密码加密

安装步骤

  1. 克隆或下载脚本
    将脚本保存为 os_batch_inspector.py

  2. 安装 Python 依赖

    pip install paramiko python-docx openpyxl cryptography
  3. (可选)使用 PyInstaller 打包为独立可执行文件

    pip install pyinstaller
    pyinstaller --onefile --name os_inspector os_batch_inspector.py

    打包后可在无 Python 环境的机器上运行。

使用指南

1. 生成 Excel 主机模板

运行脚本,选择菜单 2. 📁 创建 Excel 模板

python os_batch_inspector.py
  • 按提示输入模板文件名(或直接回车使用默认名称)。
  • 模板将保存在脚本所在目录的 os_inspection_templates/ 文件夹下。

模板字段说明

列名 必填 说明
主机名(可选) 自定义显示名称,为空则自动获取远程主机名
IP地址 待巡检主机的 IP
SSH端口 默认为 22
SSH用户 默认为 root
SSH密码 明文或已加密密码(保存时会自动加密
运维单位 用于报告封面,默认为“中国移动”
运维人员 用于报告签名,默认为“陈松坡”
描述 备注信息
启用检查 填写“是/否”,默认“是”
优先级 数字越小越优先执行

密码安全:模板首次保存时,工具会自动检测明文密码并加密,后续加载时自动解密使用。不同机器生成的模板因加密密钥不同而无法跨机使用,这属于正常安全机制。

2. 填写模板

  • 使用 Excel 打开模板,填写各主机的连接信息。
  • 若不想巡检某台主机,可将“启用检查”列设为“否”。

3. 执行批量巡检

返回主菜单,选择 1. 🚀 批量巡检

  • 选择之前生成的模板文件。
  • 输入并发线程数(建议 3~5,根据网络和机器性能调整)。
  • 工具将依次连接各主机,执行所有检查项,最终在 os_inspection_templates/巡检报告_时间戳/ 目录下生成:
    • 每台主机的独立 Word 报告(命名格式:IP地址_巡检报告_时间.docx
    • 一份批量汇总报告(.txt

4. 查看报告

  • Word 报告:包含 12 个大章节,关键指标带有颜色标识(绿色=正常,橙色=警告,红色=危险)。
  • 汇总报告:记录所有主机的巡检结果路径和失败列表。

5. 调试日志

若巡检过程中出现异常,可查看详细日志:

  • 主菜单选择 3. 📜 查看调试日志,显示最近 100 行 DEBUG 日志。
  • 完整日志路径:/tmp/os_inspector_debug.log(Linux/macOS)或 C:\tmp\os_inspector_debug.log(需手动创建,Windows 下日志写入当前目录)。

报告内容概览

章节 内容
1. 巡检概览 主机名、巡检时间、运维单位/人员
2. 系统基本信息 OS 版本、内核、CPU、内存、运行时间
3. 安全检查 PATH 环境变量、敏感变量、配置文件权限
4. 僵尸进程 列出所有 Z 状态进程
5. 系统句柄分析 全局句柄限制与使用率、进程级 TOP 10
6. 磁盘 I/O 统计 各设备的读写完成次数
7. 中间件巡检 端口监听(MySQL/Redis/Nginx 等)+ 深度进程检测
8. 性能分析 CPU/内存/磁盘使用率及 TOP 5 进程
9. 服务与系统更新 systemd/sysv 关键服务状态,系统更新跳过实际检查(防卡死)
10. 日志与定时任务 错误日志、登录失败、crontab 内容、可疑任务
11. 网络状态 接口配置、TCP 连接状态统计、监听端口
12. 巡检总结 自动汇总所有异常项,并给出通用建议

常见问题

Q1:为什么系统更新检查显示“已跳过”?

A:为了避免 yum check-updateapt update 因网络/仓库问题导致长时间卡死,工具默认跳过实际的更新检查,仅检测包管理器的可用性。如需检查更新,请自行登录主机执行。

Q2:某些命令执行超时或失败怎么办?

A:工具对所有命令设置了超时(通常 10~30 秒),若主机负载过高或网络延迟大,可能超时。可通过查看 /tmp/os_inspector_debug.log 定位具体命令,适当增加超时阈值(修改代码中的 timeout 参数)。

Q3:Excel 模板中的密码加密后,能否在其他机器上使用?

A:不能。加密密钥基于当前机器的 hostname + 系统信息生成,跨机器无法解密。这是为了安全考虑,防止模板文件被复制到其他环境后泄露密码。请在每个巡检环境单独生成模板并填写明文密码(保存时会自动加密)。

Q4:报告中的中文显示为乱码?

A:Word 报告默认使用“微软雅黑”字体,若您的系统未安装该字体,请修改 OSReportGenerator._set_font 中的 font_name 为系统已有中文字体(如“宋体”)。

Q5:如何增加新的中间件检测?

A:编辑 OSSysChecker.check_middleware_detailled() 方法,参考现有代码添加 ps 和版本获取逻辑。同时可在 check_middleware()middleware_map 字典中添加新端口映射。

版本历史

  • v3.2 (2025-02):性能优化版

    • 修复 yum check-update 卡死问题(改为跳过)
    • 减少 SSH 命令交互次数(合并 PATH 检查、限制用户 crontab 遍历)
    • 增加 DEBUG 级详细日志,便于排查
    • 优化 Excel 加载时自动加密明文密码
    • 深度中间件巡检增强(达梦、Oracle、ES 等)
    • 改用 ss 命令替代 netstat(无依赖)
  • v3.0:增加 Word 报告、并发执行、密码加密

  • v2.0:基础巡检功能

许可证

本工具为内部运维使用,遵循 MIT 协议。欢迎根据实际需求二次开发。


作者:zhouhuanhuan
反馈:如有问题请查看调试日志 /tmp/os_inspector_debug.log

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 100.0%