我需要將網域的所有「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 拒絕主機檔案...
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
or 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