Como resolver um nome de host via nsswitch?

2

Eu quero testar em um script se um nome de host resolve algo diferente de 127.0.0.1 como um teste pré-flight para um script de instalação. As ferramentas que eu conheço (dig, nslookup) consultam especificamente o DNS. Na minha situação, uma entrada correta em / etc / hosts é uma configuração válida. Então a questão é:

Existe uma ferramenta parecida com uma escavação, idealmente já no sistema, que faz o processo completo de resolução de nomes via nsswitch.conf, como (por exemplo) o ping faz?

dig my-test-server-that-only-exists-in-etc-hosts 

retorna NXDOMAIN.

    
por AnotherHowie 29.11.2013 / 10:54

1 resposta

4

Isso já tem uma resposta sobre SU:

Bash: pesquisa um IP para um nome de host, incluindo / etc / hosts na pesquisa

Basicamente, você usa

getent ahosts host_name

em que host_name pode ser uma entrada em seu /etc/hosts e, nesse caso, será resolvida para isso ou um host que seu DNS possa resolver.

Citando a página getent(1) man:

ahosts
When no key is provided, use sethostent(3), gethostent(3), and endhostent(3) to enumerate the hosts database. This is identical to using hosts. When one or more key argu‐ ments are provided, pass each key in succession to getad‐ drinfo(3) with the address family AF_UNSPEC, enumerating each socket address structure returned

    
por 29.11.2013 / 12:34