You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否编写dig脚本:从domains.txt批量查询域名ANY记录并输出至results.txt(格式易读)

实现方案:批量查询域名DNS记录的Shell脚本

当然可以实现这个需求!我写了一个Shell脚本,既能批量处理domains.txt里的域名,又能让输出结果结构清晰、易于阅读。

脚本代码

#!/bin/bash

# 定义输入输出文件
INPUT_FILE="domains.txt"
OUTPUT_FILE="results.txt"

# 检查输入文件是否存在
if [ ! -f "$INPUT_FILE" ]; then
    echo "错误:$INPUT_FILE 文件不存在,请先创建该文件并添加域名!"
    exit 1
fi

# 清空输出文件(如果需要每次运行覆盖旧结果,保留这行;如果要追加,注释掉)
> "$OUTPUT_FILE"

# 读取每个域名并执行查询
while IFS= read -r domain; do
    # 跳过空行和以#开头的注释行
    [[ -z "$domain" || "$domain" == "#"* ]] && continue

    # 写入分隔线和域名标题,增强可读性
    echo "=========================================" >> "$OUTPUT_FILE"
    echo "域名: $domain 的DNS ANY记录查询结果" >> "$OUTPUT_FILE"
    echo "=========================================" >> "$OUTPUT_FILE"
    echo "" >> "$OUTPUT_FILE"

    # 执行dig查询并将结果写入输出文件
    dig +noall +answer "$domain" ANY >> "$OUTPUT_FILE"
    echo "" >> "$OUTPUT_FILE"  # 添加空行分隔不同域名的结果
done < "$INPUT_FILE"

echo "查询完成!结果已保存至 $OUTPUT_FILE"

脚本说明

  • 文件检查:脚本开头会先确认domains.txt是否存在,避免因文件缺失报错
  • 注释与空行处理:会自动跳过domains.txt里的空行和以#开头的注释行,方便你在域名文件里加备注
  • 格式优化:每个域名的结果会用分隔线和标题区分,结果之间有空行分隔,不会杂乱无章
  • dig参数优化:用+noall +answer只返回实际的DNS记录,去掉dig默认的冗余信息,让结果更简洁

使用步骤

  1. 创建domains.txt文件,每行写一个域名,示例:
    example.com
    google.com
    # 这是一条注释,会被跳过
    github.com
    
  2. 将上面的脚本保存为dig_domains.sh
  3. 给脚本添加执行权限:
    chmod +x dig_domains.sh
    
  4. 运行脚本:
    ./dig_domains.sh
    
  5. 查看结果:直接打开results.txt就能看到格式化后的查询结果啦

内容的提问来源于stack exchange,提问作者afs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:22:25