Las soluciones dadas hasta ahora funcionan principalmente en el caso más simple: el nombre de host se resuelve directamente en una sola dirección IPv4. Este podría ser el único caso en el que necesite resolver nombres de host, pero si no, a continuación se presenta una discusión sobre algunos casos que podría necesitar manejar.
Chris Down y Heinzi discutieron brevemente el caso en el que el nombre de host se resuelve en más de una dirección IP. En este caso (y otros a continuación), las secuencias de comandos básicas bajo el supuesto de que un nombre de host se resuelve directamente en una sola dirección IP pueden romperse. A continuación, un ejemplo con un nombre de host que se resuelve en más de una sola dirección 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
Pero que es www.l.google.com
? Aquí es donde debe introducirse el caso de alias . Veamos el siguiente ejemplo:
$ 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
Por www.google.com
lo tanto , no se resuelve directamente en direcciones IP, sino en un alias que se resuelve en varias direcciones IP. Para obtener más información sobre alias, consulte aquí . Por supuesto, el caso donde un alias tiene una sola dirección IP es posible, como se muestra a continuación:
$ 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
¿Pero se pueden encadenar alias? La respuesta es sí:
$ 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
No encontré ningún ejemplo en el que un nombre de host se resuelva en un alias que no se resuelva en una dirección IP, pero creo que el caso podría ocurrir.
Más que múltiples direcciones IP y alias, ¿hay otros casos especiales ... ¿qué pasa con IPv6? Tu podrías intentar:
$ 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
Donde el nombre de host ipv6.google.com
es un nombre de host solo IPv6. ¿Qué pasa con los nombres de host de doble pila?
$ 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::
Nuevamente sobre IPv6, si su host es solo IPv4, aún puede resolver direcciones IPv6 (probado en un WinXP solo IPv4 y con ipv6.google.com, puede probarlo en Linux). En este caso, la resolución tiene éxito, pero un ping falla con un mensaje de error de host desconocido . Este podría ser un caso en el que su script falla.
Espero que esas observaciones hayan sido útiles.
getent <ahosts|ahostsv4|ahostsv6|hosts> <hostname>
respuesta esté en algún lugar cerca del fondo. Es el más simple, no requiere paquetes adicionales y también es más fácil de analizar desde un script Bash.