本文目录导读:

我来为您介绍几种使用Shell脚本生成HTML报告的方法:
基础HTML报告生成
最简单的示例
#!/bin/bash
# 生成HTML报告
cat > report.html << EOF
<!DOCTYPE html>
<html>
<head>系统报告</title>
<style>
body { font-family: Arial, sans-serif; margin: 20px; }
h1 { color: #333; }
.info { background: #f5f5f5; padding: 10px; border-radius: 5px; }
</style>
</head>
<body>
<h1>系统状态报告</h1>
<div class="info">
<p>生成时间: $(date)</p>
<p>主机名: $(hostname)</p>
<p>IP地址: $(hostname -I)</p>
</div>
</body>
</html>
EOF
echo "报告已生成: report.html"
带数据表格的报告
#!/bin/bash
report_file="system_report_$(date +%Y%m%d).html"
# 获取系统信息
get_system_info() {
echo "<table border='1' cellspacing='0' cellpadding='5'>"
echo "<tr><th>指标</th><th>值</th></tr>"
echo "<tr><td>CPU使用率</td><td>$(top -bn1 | grep "Cpu(s)" | awk '{print $2}')%</td></tr>"
echo "<tr><td>内存使用</td><td>$(free -h | awk '/^Mem:/ {print $3"/"$2}')</td></tr>"
echo "<tr><td>磁盘使用</td><td>$(df -h / | awk 'NR==2 {print $5}')</td></tr>"
echo "<tr><td>运行时间</td><td>$(uptime -p)</td></tr>"
echo "</table>"
}
# 生成完整报告
cat > $report_file << EOF
<!DOCTYPE html>
<html>
<head>系统监控报告</title>
<style>
body { font-family: 'Microsoft YaHei', Arial, sans-serif; margin: 30px; background: #f0f0f0; }
.container { max-width: 800px; margin: auto; background: white; padding: 20px; border-radius: 10px; box-shadow: 0 0 10px rgba(0,0,0,0.1); }
h1 { color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 10px; }
table { width: 100%; border-collapse: collapse; margin: 20px 0; }
th { background: #3498db; color: white; padding: 10px; }
td { padding: 10px; text-align: center; }
tr:nth-child(even) { background: #f2f2f2; }
.footer { text-align: center; color: #7f8c8d; margin-top: 30px; }
</style>
</head>
<body>
<div class="container">
<h1>📊 系统监控报告</h1>
<p><strong>生成时间:</strong> $(date '+%Y-%m-%d %H:%M:%S')</p>
<h2>系统概况</h2>
$(get_system_info)
<h2>磁盘使用情况</h2>
<pre>$(df -h)</pre>
<div class="footer">
<p>由 $(whoami) 于 $(hostname) 生成</p>
</div>
</div>
</body>
</html>
EOF
echo "报告已生成: $report_file"
可复用的报告生成函数
#!/bin/bash
# 报告生成器函数
generate_html_report() {
local title="$1"
local content="$2"
local filename="$3"
cat > "$filename" << EOF
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">$title</title>
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;
line-height: 1.6;
color: #333;
padding: 20px;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
min-height: 100vh;
}
.container {
max-width: 900px;
margin: 20px auto;
background: white;
padding: 30px;
border-radius: 15px;
box-shadow: 0 10px 40px rgba(0,0,0,0.1);
}
h1 {
color: #2c3e50;
font-size: 28px;
margin-bottom: 20px;
padding-bottom: 15px;
border-bottom: 3px solid #3498db;
}
.meta {
background: #f8f9fa;
padding: 15px;
border-radius: 8px;
margin-bottom: 25px;
font-size: 14px;
color: #666;
}
.content {
margin: 20px 0;
}
.footer {
text-align: center;
padding: 20px 0 0;
border-top: 1px solid #eee;
margin-top: 30px;
color: #999;
font-size: 13px;
}
table {
width: 100%;
border-collapse: collapse;
margin: 15px 0;
}
th, td {
border: 1px solid #dee2e6;
padding: 12px;
text-align: left;
}
th {
background: #3498db;
color: white;
}
tr:hover {
background: #f5f5f5;
}
.success { color: #27ae60; font-weight: bold; }
.warning { color: #f39c12; font-weight: bold; }
.error { color: #e74c3c; font-weight: bold; }
</style>
</head>
<body>
<div class="container">
<h1>📑 $title</h1>
<div class="meta">
<span>📅 生成时间: $(date '+%Y-%m-%d %H:%M:%S')</span>
<span style="margin-left: 20px;">🖥️ 主机: $(hostname)</span>
<span style="margin-left: 20px;">👤 用户: $(whoami)</span>
</div>
<div class="content">
$content
</div>
<div class="footer">
<p>Automated Report Generated by Shell Script</p>
</div>
</div>
</body>
</html>
EOF
echo "报告已生成: $filename"
}
# 使用示例
create_system_report() {
local content=""
# 添加CPU信息
content+="<h2>💻 CPU信息</h2>"
content+="<pre>$(lscpu | head -10)</pre>"
# 添加内存信息
content+="<h2>🧮 内存使用</h2>"
content+="<table>
<tr><th>类型</th><th>总量</th><th>已用</th><th>可用</th><th>使用率</th></tr>
<tr>
<td>物理内存</td>
<td>$(free -h | awk '/^Mem:/ {print $2}')</td>
<td>$(free -h | awk '/^Mem:/ {print $3}')</td>
<td>$(free -h | awk '/^Mem:/ {print $4}')</td>
<td>$(free | awk '/^Mem:/ {printf "%.1f%%", $3/$2*100}')</td>
</tr>
</table>"
# 添加磁盘信息
content+="<h2>💾 磁盘使用</h2>"
content+="<table>
<tr><th>文件系统</th><th>大小</th><th>已用</th><th>可用</th><th>使用率</th><th>挂载点</th></tr>"
while read line; do
if [[ $line =~ ^/dev/ ]]; then
content+="<tr>"
for col in $line; do
content+="<td>$col</td>"
done
content+="</tr>"
fi
done <<< "$(df -h)"
content+="</table>"
# 添加进程信息
content+="<h2>🔝 前5个CPU占用进程</h2>"
content+="<pre>$(ps aux --sort=-%cpu | head -6)</pre>"
generate_html_report "系统性能报告" "$content" "system_report_$(date +%Y%m%d_%H%M%S).html"
}
# 运行报告生成
create_system_report
带图表的报告(使用ASCII图表)
#!/bin/bash
# 生成带ASCII图表的报告
generate_chart_report() {
local cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d. -f1)
local mem_usage=$(free | awk '/^Mem:/ {printf "%.0f", $3/$2*100}')
# 生成CPU图表
local cpu_chart=""
for ((i=0; i<20; i++)); do
if [ $i -lt $((cpu_usage/5)) ]; then
cpu_chart+="█"
else
cpu_chart+="░"
fi
done
# 生成内存图表
local mem_chart=""
for ((i=0; i<20; i++)); do
if [ $i -lt $((mem_usage/5)) ]; then
mem_chart+="█"
else
mem_chart+="░"
fi
done
cat > chart_report.html << EOF
<!DOCTYPE html>
<html>
<head>系统资源图表报告</title>
<style>
body { font-family: 'Courier New', monospace; }
.bar { display: inline-block; min-width: 200px; }
.bar-fill { background: #3498db; color: white; padding: 2px 5px; }
.chart-container { margin: 20px 0; }
</style>
</head>
<body>
<h1>系统资源使用图表</h1>
<div class="chart-container">
<h3>CPU使用率: ${cpu_usage}%</h3>
<div style="background: #eee; width: 400px; height: 20px;">
<div style="background: #3498db; width: ${cpu_usage}%; height: 20px; text-align: center; color: white;">
${cpu_usage}%
</div>
</div>
</div>
<div class="chart-container">
<h3>内存使用率: ${mem_usage}%</h3>
<div style="background: #eee; width: 400px; height: 20px;">
<div style="background: #e74c3c; width: ${mem_usage}%; height: 20px; text-align: center; color: white;">
${mem_usage}%
</div>
</div>
</div>
</body>
</html>
EOF
}
使用方法
运行脚本
# 保存脚本为 generate_report.sh chmod +x generate_report.sh # 执行脚本 ./generate_report.sh # 或者在浏览器中查看 xdg-open report.html # Linux open report.html # macOS start report.html # Windows Git Bash
定时生成报告
# 每5分钟生成一次报告 */5 * * * * /path/to/generate_report.sh # 每小时生成一次 0 * * * * /path/to/generate_report.sh
这些脚本可以根据您的具体需求进行修改和扩展,您可以根据报告的内容和格式要求,调整HTML结构和CSS样式。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播