сложные манипуляции с файлами зоны BIND

Я пытаюсь написать сценарий, который будет принимать файл зоны 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.

Какие-либо предложения?


person George K.    schedule 02.08.2013    source источник


Ответы (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-адрес вместе с именем хоста.

Обратите внимание, что в команде, которую я показал, подсеть жестко запрограммирована в регулярном выражении, но вы можете применить аналогичную стратегию, чтобы извлечь ее из вашего имени файла, вставив ее в регулярное выражение.

Вы также можете рассмотреть возможность запуска файлов зон через named-compilezone, чтобы убедиться, что они имеют канонический формат, подходящий для сценариев.

person Wil Tan    schedule 03.08.2013