能否编写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默认的冗余信息,让结果更简洁
使用步骤
- 创建
domains.txt文件,每行写一个域名,示例:example.com google.com # 这是一条注释,会被跳过 github.com - 将上面的脚本保存为
dig_domains.sh - 给脚本添加执行权限:
chmod +x dig_domains.sh - 运行脚本:
./dig_domains.sh - 查看结果:直接打开
results.txt就能看到格式化后的查询结果啦
内容的提问来源于stack exchange,提问作者afs
相关产品推荐
相关产品推荐

