使用bash调用dig提取域名MX记录并格式化无冗余输出的方案咨询
批量查询MX记录脚本优化方案
原脚本问题排查
- 每次循环将dig结果追加到临时文件
tmp.txt,后续循环处理时会重复读取所有历史查询结果,直接导致输出重复 - 未过滤dig命令默认返回的头信息、注释行、空行,产生大量冗余内容
- 没有做全局去重处理,也没有按要求格式化输出内容
优化后脚本
#!/bin/bash # 清空历史结果文件 > mxinfo.txt while IFS=';' read domain dummy do # 跳过空行避免无效查询 [ -z "$domain" ] && continue # +short参数直接返回精简MX结果,无冗余头信息 dig mx "$domain" +short | while read prio mx_addr do # 按要求格式输出 echo "$domain = $mx_addr" done done < mxlist.txt | sort -u >> mxinfo.txt
优化说明
- 使用
dig +short参数直接获取仅含优先级和MX地址的精简结果,省去手动过滤冗余内容的步骤 - 去掉临时文件,通过管道流式处理查询结果,彻底解决重复读取历史数据的问题
- 末尾通过
sort -u做全局去重,保证每条MX记录仅输出一次 - 输出格式完全匹配需求,无需额外做字段切割处理
内容的提问来源于stack exchange,提问作者MCmcoy
相关产品推荐
相关产品推荐

