As soluções fornecidas até agora funcionam principalmente no caso mais simples: o nome do host é resolvido diretamente para um único endereço IPv4. Este pode ser o único caso em que você precisa resolver nomes de host, mas, se não, a seguir, há uma discussão sobre alguns casos com os quais você pode precisar lidar.
Chris Down e Heinzi discutiram brevemente o caso em que o nome do host resolve para mais de um endereço IP. Nesse caso (e outros abaixo), os scripts básicos sob a suposição de que um nome de host seja resolvido diretamente para um único endereço IP podem ser interrompidos. Abaixo, um exemplo com um nome de host resolvido para mais de um único endereço IP:
$ host www.l.google.com
www.l.google.com has address 209.85.148.147
www.l.google.com has address 209.85.148.103
www.l.google.com has address 209.85.148.99
www.l.google.com has address 209.85.148.106
www.l.google.com has address 209.85.148.105
www.l.google.com has address 209.85.148.104
Mas o que é isso www.l.google.com
? É aqui que o caso do alias precisa ser introduzido. Vamos verificar o exemplo abaixo:
$ host www.google.com
www.google.com is an alias for www.l.google.com.
www.l.google.com has address 74.125.39.103
www.l.google.com has address 74.125.39.147
www.l.google.com has address 74.125.39.105
www.l.google.com has address 74.125.39.99
www.l.google.com has address 74.125.39.106
www.l.google.com has address 74.125.39.104
Portanto www.google.com
, não resolve diretamente para endereços IP, mas para um alias que resolve sozinho para vários endereços IP. Para mais informações sobre aliases, clique aqui . Obviamente, o caso em que um alias tem um único endereço IP é possível, como mostrado abaixo:
$ host g.www.ms.akadns.net
g.www.ms.akadns.net is an alias for lb1.www.ms.akadns.net.
lb1.www.ms.akadns.net has address 207.46.19.190
Mas os aliases podem ser encadeados? A resposta é sim:
$ host www.microsoft.com
www.microsoft.com is an alias for toggle.www.ms.akadns.net.
toggle.www.ms.akadns.net is an alias for g.www.ms.akadns.net.
g.www.ms.akadns.net is an alias for lb1.www.ms.akadns.net.
lb1.www.ms.akadns.net has address 207.46.19.254
$ host www.google.fr
www.google.fr is an alias for www.google.com.
www.google.com is an alias for www.l.google.com.
www.l.google.com has address 74.125.39.147
www.l.google.com has address 74.125.39.103
www.l.google.com has address 74.125.39.99
www.l.google.com has address 74.125.39.106
www.l.google.com has address 74.125.39.104
www.l.google.com has address 74.125.39.105
Não encontrei nenhum exemplo em que um nome de host resolva um alias que não seja um endereço IP, mas acho que o caso pode ocorrer.
Mais do que vários endereços IP e apelidos, existem outros casos especiais ... e o IPv6? Você poderia tentar:
$ host ipv6.google.com
ipv6.google.com is an alias for ipv6.l.google.com.
ipv6.l.google.com has IPv6 address 2a00:1450:8007::68
Onde o nome do host ipv6.google.com
é um nome de host somente para IPv6. E os nomes de host de pilha dupla:
$ host www.facebook.com
www.facebook.com has address 66.220.153.15
www.facebook.com has IPv6 address 2620:0:1c08:4000:face:b00c::
Novamente sobre o IPv6, se o seu host for apenas IPv4, você ainda poderá resolver os endereços IPv6 (testado em um WinXP somente para IPv4 e com o ipv6.google.com, você poderá experimentá-lo no Linux). Nesse caso, a resolução é bem-sucedida, mas um ping falha com uma mensagem de erro desconhecida do host . Pode ser um caso em que seu script falha.
Espero que essas observações tenham sido úteis.
getent <ahosts|ahostsv4|ahostsv6|hosts> <hostname>
resposta esteja em algum lugar lá embaixo, perto do fundo. É o mais simples, não requer pacotes extras e é mais fácil analisar também a partir de um script Bash.