如何通过Shell脚本查询IP Whois信息并以表格形式输出
改造Shell脚本输出IP分析的Markdown表格
我帮你调整脚本,让它把IP的whois组织信息和PTR主机名整理成清晰的Markdown表格,这样输出的结果更易读和归档。
最终脚本实现
#!/bin/bash # 打印Markdown表格表头 echo "| IP Address | Organization/Description | Hostname |" echo "|------------------|--------------------------|------------------------|" # 循环读取输入文件中的每个IP while read -r line; do # 跳过空行 [[ -z "$line" ]] && continue # 获取组织/描述信息,优先取OrgName,没有则取descr,无结果显示N/A org_info=$(whois "$line" | awk '/^OrgName:|^descr:/ {sub(/^[^:]+: /, ""); print; exit}' || echo "N/A") # 获取PTR主机名,无结果显示N/A hostname=$(dig -x "$line" +short || echo "N/A") # 处理dig可能返回的空值 [[ -z "$hostname" ]] && hostname="N/A" # 输出表格行,对齐格式(可以根据实际情况调整空格) printf "| %-16s | %-24s | %-22s |\n" "$line" "$org_info" "$hostname" done < your_ip_list.txt
脚本说明
- 表格结构:先输出Markdown表格的表头和分隔线,确保格式符合标准。
- 空行处理:跳过输入文件中的空行,避免无效的IP处理。
- Whois信息提取:用
awk精准匹配OrgName或descr字段,自动去除字段名只保留内容,找不到匹配项时显示N/A。 - PTR记录获取:用
dig -x $line +short直接获取简洁的主机名结果,比你原来的grep组合更高效,空结果时也统一显示N/A。 - 格式化输出:用
printf固定列宽,保证表格列对齐,让输出看起来更整齐。
使用方法
把你的IP列表保存为your_ip_list.txt(或者替换成你实际的文件名),给脚本加上执行权限后运行,就能直接得到可复制使用的Markdown表格了。
示例输出效果:
| IP Address | Organization/Description | Hostname | |------------------|--------------------------|------------------------| | 106.1.2.5 | CHINANET-BJ Beijing Province Network | 106.1.2.5.static.bjtelecom.net | | 42.34.74.34 | ALIBABA-CN Alibaba (China) Technology Co., Ltd. | 42.34.74.34.static.alibabadns.com | | 173.23.74.34 | CLOUDFLARENET Cloudflare, Inc. | 173.23.74.34.cloudflare.com |
内容的提问来源于stack exchange,提问作者ishaansinha
相关产品推荐
相关产品推荐

