====== 如何:查询一个域名中的若干主机名,并生成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