Как преобразовать список имен хостов в IP-адреса при запросе dig или использовании getent

Как преобразовать список имен хостов в IP-адреса при запросе dig или использовании getent

Мне нужно преобразовать все записи «A» для домена в IP-адреса, если они существуют, при создании bash-скрипта.

Я искал, существует ли команда dig для извлечения всех записей для домена, но не смог найти ни одной, поэтому я использую имена хостов, которые, как мне известно, существуют из визуального представления, предоставленного нам определенной программой онлайн-чата.

Вот что у меня есть на данный момент

#!/bin/bash

pricks=(
   "c1.domain.com"
   "c2.domain.com"
   "c3.domain.com"
   "c4.domain.com"
   "c5.domain.com"
   "c6.domain.com"
   "c7.domain.com"
   "c8.domain.com"
   "c9.domain.com"
   "c10.domain.com"
   "c11.domain.com"
   "c12.domain.com"
   "c13.domain.com"
   "c14.domain.com"
   "c15.domain.com"
   "c16.domain.com"
   "c17.domain.com"
   "c18.domain.com"
   "c19.domain.com"
   "c20.domain.com"
)

for prick in "${pricks[@]}"
do
   echo "apf -d $prick \"$prick\"" >> add_apf_rules.sh
done
exit

Это дает мне следующий вывод, который я могу легко выполнить и который добавит имена хостов в файл apf deny hosts ...

apf -d c1.domain.com "c1.domain.com"
apf -d c2.domain.com "c2.domain.com"
apf -d c3.domain.com "c3.domain.com"
apf -d c4.domain.com "c4.domain.com"
apf -d c5.domain.com "c5.domain.com"
apf -d c6.domain.com "c6.domain.com"
apf -d c7.domain.com "c7.domain.com"
apf -d c8.domain.com "c8.domain.com"
apf -d c9.domain.com "c9.domain.com"
apf -d c10.domain.com "c10.domain.com"
apf -d c11.domain.com "c11.domain.com"
apf -d c12.domain.com "c12.domain.com"
apf -d c13.domain.com "c13.domain.com"
apf -d c14.domain.com "c14.domain.com"
apf -d c15.domain.com "c15.domain.com"
apf -d c16.domain.com "c16.domain.com"
apf -d c17.domain.com "c17.domain.com"
apf -d c18.domain.com "c18.domain.com"
apf -d c19.domain.com "c19.domain.com"
apf -d c20.domain.com "c20.domain.com"

Имена хостов не допускаются в «/etc/apf/deny_hosts.rules», поэтому мне нужен способ преобразовать имя хоста в IP, если он существует, и поместить IP вместо имени хоста.

Как я могу использовать getent для выполнения своей задачи?

getent hosts c15.domain.com | awk '{ print $1 }'

решение1

Вы можете попробовать использовать host -l domain.comили dig domain.com AXFR(оба они делают одно и то же), но, скорее всего, это запрещено владельцем DNS-сервера по соображениям безопасности.

Если это так, то нет возможности получить все записи A.

EDIT: Я не могу понять, о чем вы спрашиваете, поэтому начинаю догадываться:

В: Как мне изменить мой первый скрипт, чтобы получить результат:

apf -d 66.96.162.92 "c1.domain.com"
apf -d 66.96.162.93 "c2.domain.com"
apf -d 66.96.162.94 "c3.domain.com"

А:

for prick in "${pricks[@]}"; do
   echo apf -d $(getent hosts "$prick") >> add_apf_rules.sh
done

Связанный контент