×

一键生成linux巡检报告!自动输出带配色的HTML报告

hqy hqy 发表于2025-10-26 22:54:26 浏览13 评论0

抢沙发发表评论

运维人,你今天巡检服务器了吗?

还在手动逐项检查系统状态?
还在为繁琐的日志分析头疼?
这个脚本帮你1分钟完成深度巡检!

图片
图片
图片
图片

脚本亮点速览

1️⃣ 一键生成高颜值报告
✨ 自动输出带配色方案的HTML报告
✨ 支持中文字体显示
✨ 状态分级预警(正常/警告/严重)

2️⃣ 九大核心检测模块
✅ 系统基础信息 ✅ CPU负载与温度
✅ 内存/SWAP分析 ✅ 磁盘健康检查
✅ RAID状态检测 ✅ 防火墙配置
✅ SSH安全审计 ✅ 关键服务状态
✅ 错误日志速查

3️⃣ 智能环境适配
? 自动识别UFW/Firewalld防火墙
? 支持主流Linux发行版(CentOS/Ubuntu等)
? 硬件温度检测(需lm-sensors支持)


使用方式

  1. 复制代码保存为 linux_check.sh
  2. 添加执行权限:chmod +x linux_check.sh
  3. 直接运行:./linux_check.sh 2>/dev/null

实时生成效果预览

图片
报告已生成: file:///home/user/linux_check_202308151200.html

报告深度解读

核心指标可视化

  • CPU温度异常实时标黄
  • 磁盘使用率≥80%自动标红
  • SSH安全配置风险提示

安全审计亮点

<trclass='warning'><td>Root登录</td><td>⚠️ 允许</td></tr>
<trclass='warning'><td>密码认证</td><td>⚠️ 启用</td></tr>

高危配置一目了然!


进阶使用技巧

定时自动巡检

# 每天8点自动运行
0 8 * * * /path/to/linux_check.sh

邮件报警配置

# 添加邮件发送命令
echo"报告见附件" | mail -a $REPORT -s "系统巡检报告" admin@example.com

常见问题解答

Q: 显示mdadm未安装怎么办?
A: 执行 sudo apt install mdadm 或 sudo yum install mdadm

Q: 如何检测硬件温度?
A: 安装lm-sensors:sudo sensors-detect


获取脚本

关注+回复【巡检脚本】获取定期更新版本 ?

【或者文末】


? 运维小贴士

建议在业务低峰期运行脚本
关键报告请做好归档管理
发现预警项应及时处理!

? 互动话题
你在服务器巡检中遇到过哪些棘手问题?
欢迎留言区分享你的运维经验!


 

IT信息化日常更新IT信息化相关资讯583篇原创内容公众号

  • 推荐阅读:

1、deepseek提问技巧

2、免费获取deepseek 2000万token

3、deepseek本地部署教程

4、15个使用deepseek的方法

后面我会定期给大家分享AI运维技术相关的资源,更文需要大家的鼓励,不介意的话可以把我的文章转发给需要的朋友,点亮文章底部的❤图标,更文基本没什么收益,以后每篇文章后面会给大家分享几个益智小游戏,大家看完文章记得玩两把再退出去,感谢! 

Image























































































































































#!/bin/bash# 设置UTF-8环境echo "开始巡检,请等待!"export.UTF-8export LC_ALL=en_US.UTF-8
# 定义HTML文件REPORT="linux_check_$(date +%Y%m%d%H%M).html"
# HTML头部模板cat << EOF > $REPORT<!DOCTYPE html><html><head>  <meta charset="UTF-8">  <title>Linux深度巡检报告</title>  <style>    body {font-family"微软雅黑", Arial; margin20px;}    h1 {color#2c3e50border-bottom3px solid #3498db;}    h2 {color#34495emargin-top30px;}    table {border-collapse: collapse; width100%margin15px 0box-shadow0 1px 3px rgba(0,0,0,0.1)}    th {background#3498dbcolor: white; padding12pxtext-align: left;}    td {padding10pxborder1px solid #ddd;}    .warning {background#f8d7dacolor#721c24;}    .normal {background#d4eddacolor#155724;}    .critical {background#fff3cdcolor#856404;}    pre {background#f8f9fapadding10pxborder-radius5px;}  </style></head><body><h1>系统深度巡检报告</h1><p>生成时间: $(date "+%Y-%m-%d %H:%M:%S")</p>EOF
# 系统基础信息检测{  echo "<h2>系统概览</h2>"  echo "<table><tr><th>指标</th><th></th></tr>"  echo "<tr><td>主机名</td><td>$(hostname)</td></tr>"  echo "<tr><td>操作系统</td><td>$(source /etc/os-release; echo $PRETTY_NAME)</td></tr>"  echo "<tr><td>内核版本</td><td>$(uname -r)</td></tr>"  echo "<tr><td>系统架构</td><td>$(arch)</td></tr>"  echo "<tr><td>运行时间</td><td>$(uptime -p | sed 's/up //')</td></tr>"  echo "</table>"} >> $REPORT
# CPU与负载检测{  echo "<h2>⚡ CPU状态</h2>"  echo "<table><tr><th>指标</th><th></th></tr>"  echo "<tr><td>物理核心数</td><td>$(lscpu | awk '/Core/{print $4}')</td></tr>"  echo "<tr><td>逻辑核心数</td><td>$(nproc)</td></tr>"  echo "<tr><td>5分钟负载</td><td>$(uptime | awk -F 'average:' '{print $2}')</td></tr>"  echo "<tr><td>使用率</td><td>$(mpstat 1 1 | awk '$12 ~ /[0-9.]+/ {print 100 - $12"%"}')</td></tr>"  echo "<tr><td>温度监控</td><td>$(sensors 2>/dev/null | awk '/Core/{print $3}' | tr '\n' ' ')</td></tr>"  echo "</table>"} >> $REPORT
# 内存与Swap检测{  echo "<h2>内存状态</h2>"  free -m | awk '    BEGIN {print "<table><tr><th>类型</th><th>总量</th><th>已用</th><th>可用</th><th>使用率</th></tr>"}    /Mem/ {printf "<tr><td>内存</td><td>%sMB</td><td>%sMB</td><td>%sMB</td><td>%.1f%%</td></tr>", $2, $3, $7, $3/$2 * 100}    /Swap/ {printf "<tr><td>Swap</td><td>%sMB</td><td>%sMB</td><td>%sMB</td><td>%.1f%%</td></tr>", $2, $3, $4, $3/$2 * 100}    END {print "</table>"}  '} >> $REPORT
# 磁盘与RAID检测{  echo "<h2>存储健康</h2>"  echo "<table><tr><th>挂载点</th><th>容量</th><th>已用</th><th>可用</th><th>使用率</th><th>健康状态</th></tr>"  df -h | awk 'NR>1 {    usage=$5;   ;    if (usage >= 90);    else if (usage >= 80);    printf "<tr class='%s'><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>",    class, $6, $2, $3, $4, $5, (usage >= 90 ? "⚠️需扩容" : "✅正常")  }' | sed 's/%//g'  echo "</table>"
  # RAID检测  echo "<h3>RAID状态</h3>"  echo "<pre>"  if command -v mdadm &> /dev/null; then    mdadm --detail /dev/md* 2>/dev/null | grep -E "/(md)|State"  else    echo "RAID工具未安装,建议执行:sudo apt-get install mdadm 或 sudo yum install mdadm"  fi  echo "</pre>"} >> $REPORT
# 网络与安全检测{  echo "<h2>网络与安全</h2>"  echo "<h3>防火墙状态</h3>"  echo "<table><tr><th>类型</th><th>状态</th></tr>"  if systemctl is-active firewalld &>/dev/null; then    echo "<tr><td>Firewalld</td><td class='normal'>✅ 运行中</td></tr>"    echo "<tr><td>开放端口</td><td><pre>$(firewall-cmd --list-ports)</pre></td></tr>"  elif ufw status | grep -q active; then    echo "<tr><td>UFW</td><td class='normal'>✅ 运行中</td></tr>"    echo "<tr><td>规则列表</td><td><pre>$(ufw status numbered)</pre></td></tr>"  else    echo "<tr><td>防火墙</td><td class='warning'>⚠️ 未启用</td></tr>"  fi  echo "</table>"
  echo "<h3>SSH安全配置</h3>"  echo "<table><tr><th>检查项</th><th>状态</th></tr>"  grep PermitRootLogin /etc/ssh/sshd_config | awk '    $0 ~ /yes/ {print "<tr class='warning'><td>Root登录</td><td>⚠️ 允许</td></tr>"}    $0 ~ /no/ {print "<tr class='normal'><td>Root登录</td><td>✅ 禁止</td></tr>"}'  grep PasswordAuthentication /etc/ssh/sshd_config | awk '    $0 ~ /yes/ {print "<tr class='warning'><td>密码认证</td><td>⚠️ 启用</td></tr>"}    $0 ~ /no/ {print "<tr class='normal'><td>密码认证</td><td>✅ 禁用</td></tr>"}'  echo "</table>"} >> $REPORT
# 服务与进程检测{  echo "<h2>服务状态</h2>"  echo "<table><tr><th>服务名</th><th>状态</th><th>启动时间</th></tr>"  services=("sshd" "nginx" "mysql" "docker" "crond")  for svc in "${services[@]}"; do    status=$(systemctl is-active $svc 2>/dev/null || echo "未安装")    uptime=$(systemctl show $svc --property=ActiveEnterTimestamp | cut -d= -f2)    [ "$status" = "active" ] && ||    echo "<tr class='$class'><td>$svc</td><td>$status</td><td>$uptime</td></tr>"  done  echo "</table>"} >> $REPORT
# 系统日志{  echo "<h2>日志分析</h2>"  echo "<h3>关键错误日志</h3>"  echo "<pre>$(journalctl -p 3 -xb --no-pager | tail -n 20)</pre>"  echo "<h3>安全审计日志</h3>"  echo "<pre>$(grep -i 'failed\|error' /var/log/auth.log /var/log/secure | tail -n 15)</pre>"} >> $REPORT
# 结尾echo "</body></html>" >> $REPORT
echo "报告已生成: file://$(pwd)/$REPORT"


打赏

本文链接:https://kinber.cn/post/5764.html 转载需授权!

分享到:


推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

 您阅读本篇文章共花了: 

群贤毕至

访客