如何:查询一个域名中的若干主机名,并生成BIND风格的zone文件

如何:查询一个域名中的若干主机名,并生成BIND风格的zone文件

问题

假设我们有一个列表:a, b, c, d。我们希望返回 example.com 中这些主机的A记录和AAAA记录。

用文本处理工具(例如sed/awk或是tr,此处略)将列表改写为正确的分割方式,例如一行一个,或是直接写在命令行里用空格分开(比如写作

a b c d

这样),就可以用 shell 的 for 来遍历列表了。

例如,如果是放到一个文本文件

list

中:

while read HOST; do
   ...
done < list

或者直接写在命令行里:

for HOST in a b c d; do
   ...
done

核心命令是 dig(1)。例如,

dig ${host}.${DOMAIN} A +noall +answer +nocmd +nottl

这样脚本变成了:

DOMAIN=example.com
for HOST in a b c d; do
   dig ${host}.${DOMAIN} A +noall +answer +nocmd +nottl
done

但这都2025年了,还不支持IPv6就太不讲究了,所以再增加一层循环:

DOMAIN=example.com
for HOST in a b c d; do
  for TYPE in A AAAA; do
    dig ${host}.${DOMAIN} ${TYPE} +noall +answer +nocmd +nottl
  done
done
notes/dns/query_to_zone.txt · 最后更改: 2025/04/09 06:52