0

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

有什么建议么?

4

1 回答 1

1

您可以使用以下命令:

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

输出:

主机.domain.tld。10.0.0.10

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

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

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

于 2013-08-03T10:04:22.223 回答