如何使bash脚本过滤DNS解析器列表 因为结果是假阳性
建议的代码
!/bin/sh
for IP in `cat ./resolvers.txt`; do
printf "%-4s", $IP
dig @$IP test.com
done
test.com是我的域,我已经知道输出是什么了,那么任何不同的结果都将来自错误的解析器。
答案 0 :(得分:1)
#!/usr/bin/env bash
case $BASH_VERSION in '') echo "ERROR: Use bash, not sh" >&2; exit 1;; esac
test_domain="test.com"
correct_ip=1.2.3.4
while IFS= read -r ip; do
if [[ $(dig +short "@$ip" "$test_domain" 2>/dev/null) = "$correct_ip" ]]; then
printf '%s\n' "$ip"
fi
done <all-resolvers.txt >good-resolvers.txt
...将读取all-resolvers.txt
,并将仅正确运行(将test_domain
解析为correct_ip
的DNS服务器的列表写为good-resolvers.txt
)。
请参阅:
[[ ]]
,在bash黑客的Wiki上。