服务器巡检,你怎么做?
- • 手动敲命令:hostname、free、df、iostat...一个一个敲,复制粘贴拼报告
- • 用监控工具:Prometheus、Zabbix 配置复杂,巡检还要手动看面板
- • 写脚本收集:自己写 Bash 脚本,维护麻烦,跨发行版兼容难
有没有想过,一个工具能:一条命令完成 17 大类巡检、自动生成 HTML 报告、零依赖开箱即用、支持 30+ Linux 发行版?
今天分享一个开源项目——Linux Auto Inspection,它就是这么设计的。
它是什么?
Linux Auto Inspection 是一款 面向运维与 SRE 的 Linux 服务器一键巡检工具。
核心定位:
- • 一条命令完成系统全方位巡检:CPU、内存、磁盘、网络、进程、安全、日志...17 大类全覆盖
- • 自动生成工程师风格 HTML 报告:简洁表格、徽章、颜色码,无花哨装饰
- • 零依赖设计:系统自带 Bash 4.0+ 就能运行,不装 Python、不装 pyvmomi
- • 跨发行版兼容:30+ 主流 Linux 发行版,没有 systemd/iproute2 也能运行
巡检报告项目基本信息:
| |
|---|
| https://github.com/Aidan-996/Linux_Auto_Inspection |
| |
| |
| |
| |
这个项目有意思的点:纯 Bash 实现,零依赖——不假设你有什么命令,全部自动 fallback。这是真正考虑生产环境复杂性的设计。
为什么需要这个工具?
Linux 服务器巡检的痛点:
| | |
|---|
| hostname、free、df、iostat...逐个执行 | |
| | RHEL 用 systemctl,Ubuntu 用 service,维护成本高 |
| | 生产环境可能没 iproute2、sysstat、docker |
| | |
| | |
Linux Auto Inspection 的做法:
一条命令 → 自动检测发行版 → 适配命令路径 → 执行17大类检查 → 生成HTML报告
一个脚本搞定:检测 → 兼容 → 执行 → 报告,8-15 秒完成。
核心功能详解
1. 17 大类检查维度
这是项目的核心价值——覆盖运维日常巡检的所有关键项。
| | |
|---|
| | hostname、uname、CPU 型号、内存规格、BIOS 信息 |
| | /proc/stat 实时计算、/proc/loadavg 负载 |
| | /proc/meminfo 详细数据、free 输出、Swap 使用率 |
| | |
| | iostat(fallback /proc/diskstats) |
| | |
| | /proc/sys/fs/file-nr 已用/限制/最大 |
| | ip addr/ifconfig、ss/netstat、路由表 |
| | |
| | |
| | |
| | systemctl + service + chkconfig 三轨 |
| | docker/podman ps、images 列表 |
| | |
| | |
| | dmesg/journalctl 异常、OOM、认证失败 |
| | chronyc/ntpq/ntpstat/timedatectl 四套 |
| | |
这个覆盖范围足够应付日常巡检——从硬件信息到安全配置,从性能指标到容器状态,一个脚本全搞定。
2. 零依赖设计
这是项目的技术亮点——不假设你有什么命令。
传统巡检脚本的问题:
# 假设有 iproute2
ip addr show
# 没装呢?报错
Linux Auto Inspection 的做法:
# 双轨 fallback
if command -v ip &> /dev/null; then
ip addr show
elif command -v ifconfig &> /dev/null; then
ifconfig
else
# 从 /sys/class/net 读取
fi
核心 helper 函数:
| |
|---|
detect_os() | |
safe_service_status() | systemctl/service/chkconfig 三轨 fallback |
safe_dmesg() | dmesg/journalctl -k fallback |
detect_timezone() | timedatectl/date fallback |
这个设计让脚本在任何环境都能运行——没有 systemd 用 sysvinit,没有 iproute2 用 ifconfig,没有 iostat 用 /proc/diskstats。
3. 跨发行版兼容
支持 30+ Linux 发行版:
| |
|---|
| RHEL 系列 | RHEL 7/8/9、CentOS 7/8/9、Rocky 8/9、AlmaLinux 8/9、Oracle Linux、Fedora、Amazon Linux |
| Debian 系列 | Ubuntu 18/20/22/24、Debian 10/11/12 |
| SUSE 系列 | |
| 国产系统 | |
| Arch 系列 | Arch、Manjaro(新增 pacman 支持) |
| Alpine | 部分兼容(busybox grep/awk 部分输出退化) |
| CentOS 6/RHEL 6 | 部分兼容(bash 4.1.2 + sysvinit fallback) |
| CentOS 5 | |

兼容性设计亮点:
| |
|---|
| yum/dnf/apt/pacman/zypper/opkg 多轨 |
| systemctl/service/chkconfig 三轨 |
| chronyc/ntpq/ntpstat/timedatectl/ntpctl 四套 |
| firewalld/ufw/nftables/iptables/SuSEfirewall2 五套 |
| hostname -I/ip route → ifconfig/netstat -rn fallback |
这个设计让脚本在新老系统都能跑——CentOS 7 用 systemctl,CentOS 6 用 service,都能正常工作。
4. 自动生成 HTML 报告
这是项目的输出亮点——工程师风格 HTML 报告。
报告特点:
输出示例:
CPU 使用率: 23.5% ✓
内存使用率: 78.2% ⚠
磁盘使用率: 95.1% ✗
僵尸进程: 0 ✓
报告路径:
/tmp/inspect_report/hostname_YYYYMMDD_HHMMSS.html
也支持 JSON 输出:
./linux_inspect.sh -f json
5. 命令行参数灵活控制
这是项目的实用性设计——针对不同场景提供参数。
用法: ./linux_inspect.sh [选项]
选项:
-o, --output FILE 指定输出文件路径
-f, --format FORMAT 输出格式: html(默认)| json
-v, --verbose 显示详细 debug 日志
-q, --quiet 静默模式,只输出报告路径
--no-large-file-scan 跳过大文件扫描(大磁盘提速)
--skip-update-check 跳过包管理器更新检查(内网无外网)
--skip-ssl-check 跳过 SSL 证书过期检查
--fast 快速模式(三个 skip 全开)
-h, --help 显示帮助
实用场景:
| |
|---|
--fast | 几 TB 大磁盘环境,跳过大文件扫描,8-15 秒完成 |
--skip-update-check | 内网环境无外网,跳过 yum/apt update 检查 |
-f json | |
-q | |
如何使用?
快速开始
三种方式,任选一种:
# 方式 1:git clone(推荐)
git clone https://github.com/Aidan-996/Linux_Auto_Inspection.git
cd Linux_Auto_Inspection && bash linux_inspect.sh
# 方式 2:wget 单文件
wget -O linux_inspect.sh https://raw.githubusercontent.com/Aidan-996/Linux_Auto_Inspection/main/linux_inspect.sh
chmod +x linux_inspect.sh && ./linux_inspect.sh
# 方式 3:一行流
curl -sL https://raw.githubusercontent.com/Aidan-996/Linux_Auto_Inspection/main/linux_inspect.sh | bash
执行后:
- • 输出:
/tmp/inspect_report/hostname_YYYYMMDD_HHMMSS.html - • 时间:8-15 秒(默认),
--fast 模式更快
查看报告
# 浏览器打开
firefox /tmp/inspect_report/hostname_20260527_143022.html
# 或直接查看路径
ls /tmp/inspect_report/
报告包含:
快速模式
大磁盘环境:
./linux_inspect.sh --fast
跳过三项:
时间:3-5 秒。
内网环境
无外网连接:
./linux_inspect.sh --skip-update-check
跳过 yum/apt update 检查,避免网络超时。
JSON 输出
集成到其他系统:
./linux_inspect.sh -f json -o /var/log/inspect.json
输出结构化 JSON,方便 API 或脚本处理。
静默模式
自动化调用:
./linux_inspect.sh -q
# 输出:/tmp/inspect_report/hostname_20260527_143022.html
只输出报告路径,适合 cron 定时任务。
Windows 编辑后修复
如果 Windows 编辑过脚本:
sed -i 's/\r$//' linux_inspect.sh
修复 CRLF 行尾问题。
与其他巡检方案对比
| | | | |
|---|
| | | | 极低(单文件) |
| | | | 低(一条命令) |
| | | | 30+ 发行版自动适配 |
| | | | 零依赖 |
| | | | 自动 HTML |
| | | | cron + 报告 |
| | | | 17 大类预设 |
Linux Auto Inspection 的差异化:
- 1. 零依赖:Bash 4.0+ 就能跑,不装 Python、不装 sysstat
- 4. Fallback 设计:没有命令自动降级,不报错
适用场景
我觉得 Linux Auto Inspection 适合这些场景:
适合人群:运维工程师、SRE、系统管理员、DevOps。
不适合的场景:如果你需要实时监控、复杂告警规则、历史数据存储,用 Prometheus/Zabbix 更合适。Linux Auto Inspection 是巡检工具,不是监控平台。
我的看法
我觉得 Linux Auto Inspection 有几个亮点:
- 1. 零依赖设计是真正考虑生产环境:很多巡检脚本假设有 iproute2、sysstat、docker。但生产环境可能最小化安装,没有这些包。Linux Auto Inspection 全部 fallback——没有 ip 用 ifconfig,没有 iostat 用 /proc/diskstats。这个设计体现生产实战经验。
- 2. 跨发行版兼容覆盖面广:30+ 发行版,从 RHEL 到 Ubuntu,从国产系统到 Arch。包管理器多轨、服务管理三轨、NTP 四套。这个适配工作量不小,但解决了运维痛点——不用针对不同系统写不同脚本。
- 3. 单文件设计部署简单:wget 一个文件就能用,不用 git clone 整个项目。这个设计适合生产环境快速部署——SSH 到服务器,wget,bash,8-15 秒拿到报告。
- 4. 命令行参数设计实用:
--fast 跳过大文件扫描,--skip-update-check 跳过网络检查,-f json 输出结构化数据。这些参数解决实际场景问题——大磁盘环境、内网环境、系统集成。 - 5. 生产事故修复体现实战经验:v2.5 修复的 CRLF 行尾、pipefail 算术崩,都是真实生产问题。Windows 编辑脚本导致 bash 崩,这个问题很多运维遇到过。项目用
.gitattributes 锁定 LF 行尾,从根本上解决。 - 7. 迭代活跃:2026 年 4 月创建,5 月已发布 v2.5,10+ 版本迭代。从 60 秒优化到 8-15 秒,跨发行版兼容大改。这个迭代速度体现项目重视用户体验。
但也有一些考虑:
- • 不支持 CentOS 5:Bash 3.x 不支持关联数组,老系统用不了
- • Alpine 部分兼容:busybox 的 grep/awk 功能受限,部分输出退化
- • 纯 Shell 性能限制:复杂计算不如 Python/Go 快,但巡检场景够用
总的来说,如果你需要快速巡检 Linux 服务器、生成 HTML 报告、不想折腾依赖安装,Linux Auto Inspection 是很好的选择。零依赖、跨发行版、单文件设计,这些特点让它成为运维日常工作利器。
项目地址:https://github.com/Aidan-996/Linux_Auto_Inspection
一句话总结:Linux 服务器巡检还在手动敲命令?试试 Linux Auto Inspection,一条命令完成 17 大类检查,自动生成 HTML 报告,零依赖开箱即用。