复杂的BIND区域文件操作

时间:2013-08-02 23:11:56

标签: dns bind text-processing

我正在尝试编写一个脚本,该脚本将采用BIND区域文件,以host ip格式获取所有A记录。我已经grep -w 'A' "$A_ZONE"|awk '{print $1,$4}'|sort -V完成了该操作,跳过了IN A部分。现在,我需要从我拥有的所有反向区域中提取PTR记录。它们按/ 24个子网分组,因此如果我有10.0.0.1的PTR记录,它将在0.0.10.in-addr.arpa.zone文件中,作为10 IN PTR host.domain.tld。看起来有点复杂,我不知道如何提取IP,以便它将采用我提取的第一个文件的格式host ip

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您可以使用以下命令:

egrep '^[0-9]+' 0.0.10.in-addr.arpa.zone | \
  perl -p -e 's/^(\d+).*\s(\S+)\s*$/$2 10.0.0.$1/'

输出:

host.domain.tld。 10.0.0.10

它会抓取以数字开头的所有记录,并匹配数字和主机名并将其反转。然后,IP地址与主机名一起构建。

请注意,在我显示的命令中,子网在regexp中是硬编码的,但您可以应用类似的策略从文件名中将其提取到正则表达式中。

您可能还需要考虑通过named-compilezone运行您的区域文件,以确保它们采用适合脚本编写的规范格式。