在创建 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 记录。
编辑:我不明白你在要求什么,所以我开始猜测:
问:我怎样修改我的第一个脚本以获得结果:
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