Мне нужно преобразовать все записи «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