我正在尝试编写一个脚本,该脚本将采用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
。
有什么建议吗?
答案 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
运行您的区域文件,以确保它们采用适合脚本编写的规范格式。