定时巡检硬件健康度并生成html报告的shell脚本需采集温度(sensors/ipmitool)、磁盘smart(smartctl)、raid状态(megacli/arcconf/hpssacli)、内存ecc(edac-util)、cpu/内存/磁盘负载(uptime/free/iostat),再用here document拼接为html。

编写一个定时巡检硬件健康度并生成HTML报告的Shell脚本,核心在于:采集关键指标(温度、磁盘、内存、CPU、RAID状态等)→ 格式化输出 → 自动渲染为可读HTML → 定时执行。下面分步说明实用写法。
采集真实硬件健康数据
别只用df或free凑数,要抓真正反映“健康度”的指标:
-
温度:用
sensors(需安装lm-sensors)或ipmitool sdr type temperature(带IPMI服务器) -
磁盘SMART状态:用
smartctl -H /dev/sda判断整体健康,smartctl -a /dev/sda | grep -E "(Reallocated|Pending|Uncorrect)"查隐患项 -
RAID状态:根据厂商选命令,如
megacli -AdpAllInfo -aALL(LSI)、arcconf GETCONFIG 1 LD(Adaptec)、hpssacli ctrl all show status(HP) -
内存ECC错误:
edac-util -v(需edac-utils包)或解析/sys/devices/system/edac/mc/mc*/ce_count -
CPU/内存/磁盘负载:用
uptime、free -h、iostat -dx 1 2 | tail -n +4 | head -n -1取平均IO使用率
用简单模板拼接HTML报告
不用引入复杂框架,纯Shell变量+Here Document生成干净HTML:
cat > "$REPORT_DIR/daily_$(date +%Y%m%d).html"
<meta charset="UTF-8"><title>硬件巡检报告 $(date +%Y-%m-%d)</title><style>body{font-family: sans-serif;margin:20px}table{border-collapse:collapse;width:100%}th,td{border:1px solid #ccc;padding:6px;text-align:left}</style><h1>硬件健康巡检报告 - $(date +%Y-%m-%d)</h1>
<h2>1. 温度状态</h2>
<pre class="brush:php;toolbar:false;">$TEMP_OUTPUT
2. 磁盘SMART健康
$SMART_OUTPUT
3. RAID状态
$RAID_OUTPUThtml> EOF
关键点:把每类检测结果先存入变量(如TEMP_OUTPUT),再统一注入HTML;用<pre class="brush:php;toolbar:false;"></pre>保留原始格式,避免HTML转义问题。
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
自动归档与异常标记
报告要有“可读性”和“可追溯性”:
- 每次生成报告后,用
ln -sf daily_$(date +%Y%m%d).html latest.html维护最新链接 - 对异常项加醒目标记:比如SMART返回
PASSED就标绿色,FAILED或含Reallocated_Sector_Ct.*[1-9]就标红色(用<span style="color:red">...</span>包裹) - 自动清理7天前旧报告:
find "$REPORT_DIR" -name "daily_*.html" -mtime +7 -delete - 检测到严重问题(如RAID Degraded、磁盘Failed)时,用
mail -s "【告警】服务器硬件异常" admin@company.com 发邮件
配置定时任务与权限保障
确保脚本能稳定运行,不是设完crontab就完事:
- 用
sudo crontab -e而非普通用户crontab,因smartctl、ipmitool等常需root权限 - 推荐定时:每天凌晨3:15执行 ——
15 3 * * * /opt/scripts/hw-check.sh > /dev/null 2>&1 - 脚本开头固定环境:
#!/bin/bash+PATH=/usr/local/bin:/usr/bin:/bin,避免cron下命令找不到 - 检查SELinux或AppArmor是否拦截(如
ausearch -m avc -ts recent | grep smartctl)
不复杂但容易忽略:实际部署前,在目标机器上手动运行一遍脚本,确认所有命令返回非空且无报错;再检查生成的HTML能否在浏览器中正常打开、样式是否可用。完成后再交给cron托管。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










