为什么要把curl重定向检测结果输出成表格?
做网站巡检时,curl命令能快速检测重定向链路,但默认输出是一堆散乱的文本,人工核对费时费力。把检测结果格式化成表格(CSV、JSON、HTML),可以让数据直接导入Excel、被程序解析、或生成可视化报告,巡检效率直接提升一个档次。
本文用3个实战方案,教你把curl重定向检测结果输出成标准表格格式,覆盖CSV、Markdown Table、HTML Table三种最常用的表格场景。
方案1:输出CSV表格(最通用,Excel直接打开)
CSV是最通用的表格格式,Excel、Numbers、Google Sheets都能直接打开。核心思路是用curl的-w参数自定义输出格式,再用awk或sed拼成CSV行。
1.1 单条URL检测输出CSV
# 定义输出模板(保存为 curl_redirect_csv.txt)
cat > curl_redirect_csv.txt << 'EOF'
%{url_effective},%{num_redirects},%{http_code},%{time_total}
EOF
# 执行检测并输出CSV格式
curl -L -w "@curl_redirect_csv.txt" -o /dev/null -s "https://example.com"
输出示例:
https://example.com/final,2,200,0.345
这就是一行标准CSV,包含:最终URL、重定向次数、HTTP状态码、总耗时。
1.2 批量URL检测输出CSV报告
#!/bin/bash
# 批量检测脚本:读取urllist.txt,输出redirect_report.csv
echo "原始URL,最终URL,重定向次数,状态码,总耗时(s)" > redirect_report.csv
while IFS= read -r url; do
result=$(curl -L -s -o /dev/null \
-w "%{url_effective},%{num_redirects},%{http_code},%{time_total}" \
"$url")
echo "$url,$result" >> redirect_report.csv
done < urllist.txt
echo "CSV报告已生成:redirect_report.csv"
生成的redirect_report.csv直接用Excel打开,数据分列整齐,可排序、筛选、做图表。
方案2:输出Markdown表格(适合文档/报告嵌入)
如果你要把检测结果嵌入技术文档、GitHub README、或运维报告,Markdown表格是最合适的格式,排版整洁、可读性强。
2.1 单条检测结果转Markdown表格
#!/bin/bash
url="https://example.com"
read -r final_url redirects http_code time_total <<< $(curl -L -s -o /dev/null \
-w "%{url_effective} %{num_redirects} %{http_code} %{time_total}" \
"$url")
cat << EOF
| 检测项 | 值 |
|--------|-----|
| 原始URL | $url |
| 最终URL | $final_url |
| 重定向次数 | $redirects |
| HTTP状态码 | $http_code |
| 总耗时(秒) | $time_total |
EOF
2.2 批量检测输出Markdown表格报告
#!/bin/bash
# 批量检测并输出Markdown表格
echo "| 原始URL | 最终URL | 重定向次数 | 状态码 | 总耗时(s) |"
echo "|----------|----------|-------------|---------|-------------|"
while IFS= read -r url; do
read -r final_url redirects http_code time_total <<< $(curl -L -s -o /dev/null \
-w "%{url_effective} %{num_redirects} %{http_code} %{time_total}" \
"$url")
echo "| $url | $final_url | $redirects | $http_code | $time_total |"
done < urllist.txt
输出直接粘贴到Markdown文档,渲染后就是一张整齐的表格。
方案3:输出HTML表格(适合邮件告警/网页展示)
当需要把检测结果通过邮件发送、或嵌入监控系统的Web界面时,HTML表格是最佳选择,可以带样式、高亮异常数据。
3.1 批量检测生成HTML表格报告
#!/bin/bash
# 生成HTML表格报告
html_file="redirect_report_$(date +%Y%m%d).html"
cat > "$html_file" << 'HEADER'
重定向检测报告
重定向检测报告
原始URL
最终URL
重定向次数
状态码
总耗时(s)
HEADER
while IFS= read -r url; do
read -r final_url redirects http_code time_total <<< $(curl -L -s -o /dev/null \
-w "%{url_effective} %{num_redirects} %{http_code} %{time_total}" \
"$url")
row_class=""
if [ "$http_code" -ne 200 ]; then
row_class="class=\"error\""
fi
cat >> "$html_file" << EOF
$url
$final_url
$redirects
$http_code
$time_total
EOF
done < urllist.txt
cat >> "$html_file" << 'FOOTER'
FOOTER
echo "HTML报告已生成:$html_file"
生成的HTML文件直接用浏览器打开,表格带斑马纹样式,状态码非200的行红色高亮,异常一目了然。
三种表格格式对比:怎么选?
| 格式 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| CSV | 数据分析、Excel处理、程序导入 | 通用性强,Excel直接打开 | 无样式,纯数据 |
| Markdown表格 | 技术文档、README、报告 | 排版整洁,可读性强 | 需要渲染环境 |
| HTML表格 | 邮件告警、Web展示、打印 | 带样式,可高亮异常 | 文件体积较大 |
实际运维中,建议三种格式一起输出:CSV存档分析、Markdown嵌入报告、HTML发邮件告警,一套数据多处复用。
进阶:用jq输出JSON再转表格(适合API对接)
如果巡检系统需要API对接,可以先输出JSON,再用jq转成任意表格格式。
# 输出JSON格式
curl -L -s -o /dev/null \
-w "{\"final_url\": \"%{url_effective}\", \"redirects\": %{num_redirects}, \"http_code\": %{http_code}, \"time_total\": %{time_total}}" \
"https://example.com" | jq .
# 批量检测输出JSON数组
# (参考本博客《curl批量检测重定向结果JSON格式存储》一文)
内链推荐
- curl -w 多变量组合格式化输出重定向信息:5个实战模板让跳转诊断事半功倍
- curl批量检测重定向次数和最终URL输出CSV:5个实战脚本让网站巡检自动化
- curl批量检测重定向输出JSON格式:3个实战脚本让巡检结果结构化存储
总结
curl重定向检测输出表格格式化,核心是用好-w参数自定义输出字段,再用Shell脚本拼成目标格式。CSV适合数据分析、Markdown适合文档嵌入、HTML适合邮件告警,三种格式覆盖运维场景。
实战中推荐批量检测脚本+多格式输出,一套巡检数据同时生成CSV/Markdown/HTML三种报告,巡检效率直接翻倍。
版权声明
本文仅代表个人观点。
本文系AI辅助作者原创,未经许可,转载请保留原文链接。

发表评论