Как для преобразования списка имен хостов в 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 }'
0
задан 21 February 2018 в 07:00
1 ответ

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

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

РЕДАКТИРОВАТЬ: Я не могу понять, о чем вы просите, поэтому начинаю гадать:

Q: Как я могу изменить свой первый сценарий чтобы получить результат:

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"

A:

for prick in "${pricks[@]}"; do
   echo apf -d $(getent hosts "$prick") >> add_apf_rules.sh
done
0
ответ дан 5 December 2019 в 06:25

Теги

Похожие вопросы