dig をクエリしたり getent を使用したりしながら、ホスト名のリストを IP アドレスに解決する方法

dig をクエリしたり getent を使用したりしながら、ホスト名のリストを IP アドレスに解決する方法

bash スクリプトを作成するときに、ドメインのすべての「A」レコードが存在する場合は、それらを IP アドレスに解決する必要があります。

ドメインのすべてのレコードを取得する 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 拒否ホスト ファイルに追加されます...

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 レコードを取得する方法はありません。

編集: 何を求めているのか理解できないので、推測してみます:

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"

答え:

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

関連情報