As soluções dadas até agora funcionam principalmente no caso mais simples: o nome do host resolve diretamente para um único endereço IPv4. Este pode ser o único caso em que você precisa resolver os nomes dos hosts, mas se não, abaixo está uma discussão sobre alguns casos que você pode precisar manipular.
Chris Down e Heinzi discutiram brevemente o caso em que o nome do host resolve mais de um endereço IP. Neste caso (e outros abaixo), o script básico sob a suposição de que um nome de host resolve diretamente para um único endereço IP pode ser interrompido. Abaixo, um exemplo com um nome de host resolvido para mais de um 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 é www.l.google.com
? É aqui que o caso 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 para vários endereços IP. Para mais informações sobre aliases, consulte aqui . Naturalmente, o caso em que um alias tem um único endereço IP é possível, conforme 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 resolve um alias que não resolve um endereço IP, mas acho que o caso pode ocorrer.
Mais do que vários endereços IP e aliases, existem alguns 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
Em que o nome do host ipv6.google.com
é um nome de host somente IPv6. E quanto a 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::
Mais uma vez sobre o IPv6, se o seu host é apenas IPv4, você ainda pode resolver os endereços IPv6 (testado em um WinXP apenas IPv4 e com ipv6.google.com, você poderia experimentá-lo no Linux). Nesse caso, a resolução é bem-sucedida, mas um ping falha com uma
mensagem de erro do host desconhecido . Isso pode ser um caso em que seu script falha.
Espero que essas observações tenham sido úteis.