Você pode obter uma lista de resolvedores DNS de /etc/resolv.conf
. Aqui está uma função para fazer isso:
# print the IP addresses of all configured nameservers
resolvers() {
awk '$1 == "nameserver" { print $2 }' /etc/resolv.conf
}
E normalmente você usa dig
ou host
para consultar um resolvedor de DNS para ver se está funcionando. Neste exemplo, estou testando se podemos resolver NS
(nameserver) para google.com. Se você estiver confiando em um host específico sendo resolvido, altere google.com in ns
para esse nome de host.
# given a nameserver IP address, exit successfully if it's responding, false otherwise
is_resolver_responding() {
dig +short google.com in ns @$1 >/dev/null
}
Aqui está uma maneira de juntar as funções. Ele imprime o endereço IP de cada servidor de nomes, seguido por OK
ou BAD
. Você poderia facilmente mudar isso para sair se um deles não está funcionando, ou fazer o que você precisa.
# print whether each configured resolver is responding (<ip> <"OK" or "BAD">)
for resolver in $(resolvers); do
printf '%s is %s\n' "$resolver" $(is_resolver_responding $resolver && echo OK || echo BAD)
done