本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。 ====== 如何:查询一个域名中的若干主机名,并生成BIND风格的zone文件 ====== ===== 问题 ===== 假设我们有一个列表:a, b, c, d。我们希望返回 example.com 中这些主机的A记录和AAAA记录。 ===== 解 ===== 用文本处理工具(例如sed/awk或是tr,此处略)将列表改写为正确的分割方式,例如一行一个,或是直接写在命令行里用空格分开(比如写作 <code>a b c d</code> 这样),就可以用 shell 的 for 来遍历列表了。 例如,如果是放到一个文本文件 <code>list</code> 中: <code bash> while read HOST; do ... done < list </code> 或者直接写在命令行里: <code bash> for HOST in a b c d; do ... done </code> 核心命令是 dig(1)。例如, <code bash> dig ${host}.${DOMAIN} A +noall +answer +nocmd +nottl </code> 这样脚本变成了: <code bash> DOMAIN=example.com for HOST in a b c d; do dig ${host}.${DOMAIN} A +noall +answer +nocmd +nottl done </code> 但这都2025年了,还不支持IPv6就太不讲究了,所以再增加一层循环: <code bash> 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 </code>