运维人,你今天巡检服务器了吗?
还在手动逐项检查系统状态?
还在为繁琐的日志分析头疼?
这个脚本帮你1分钟完成深度巡检!




? 脚本亮点速览
1️⃣ 一键生成高颜值报告
✨ 自动输出带配色方案的HTML报告
✨ 支持中文字体显示
✨ 状态分级预警(正常/警告/严重)
2️⃣ 九大核心检测模块
✅ 系统基础信息 ✅ CPU负载与温度
✅ 内存/SWAP分析 ✅ 磁盘健康检查
✅ RAID状态检测 ✅ 防火墙配置
✅ SSH安全审计 ✅ 关键服务状态
✅ 错误日志速查
3️⃣ 智能环境适配
? 自动识别UFW/Firewalld防火墙
? 支持主流Linux发行版(CentOS/Ubuntu等)
? 硬件温度检测(需lm-sensors支持)
? 使用方式
复制代码保存为 linux_check.sh添加执行权限: chmod +x linux_check.sh直接运行: ./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篇原创内容公众号
推荐阅读:
后面我会定期给大家分享AI、运维技术相关的资源,更文需要大家的鼓励,不介意的话可以把我的文章转发给需要的朋友,点亮文章底部的❤图标,更文基本没什么收益,以后每篇文章后面会给大家分享几个益智小游戏,大家看完文章记得玩两把再退出去,感谢!
2、免费获取deepseek 2000万token
#!/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; margin: 20px;} h1 {color: #2c3e50; border-bottom: 3px solid #3498db;} h2 {color: #34495e; margin-top: 30px;} table {border-collapse: collapse; width: 100%; margin: 15px 0; box-shadow: 0 1px 3px rgba(0,0,0,0.1)} th {background: #3498db; color: white; padding: 12px; text-align: left;} td {padding: 10px; border: 1px solid #ddd;} .warning {background: #f8d7da; color: #721c24;} .normal {background: #d4edda; color: #155724;} .critical {background: #fff3cd; color: #856404;} pre {background: #f8f9fa; padding: 10px; border-radius: 5px;} </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>" >> $REPORTecho "报告已生成: file://$(pwd)/$REPORT"
本文链接:https://kinber.cn/post/5764.html 转载需授权!
推荐本站淘宝优惠价购买喜欢的宝贝:

支付宝微信扫一扫,打赏作者吧~
