Le soluzioni fornite finora funzionano principalmente nel caso più semplice: il nome host si risolve direttamente in un singolo indirizzo IPv4. Questo potrebbe essere l'unico caso in cui è necessario risolvere i nomi host, ma in caso contrario, di seguito è una discussione su alcuni casi che potrebbe essere necessario gestire.
Chris Down e Heinzi hanno discusso brevemente del caso in cui il nome host si risolve in più di un indirizzo IP. In questo caso (e altri di seguito), gli script di base presupponendo che un nome host si risolva direttamente in un singolo indirizzo IP potrebbero non funzionare. Di seguito, un esempio con un nome host che si risolve in più di un singolo indirizzo 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
Ma cos'è www.l.google.com
? È qui che deve essere introdotto il caso alias . Controlliamo l'esempio di seguito:
$ 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
Quindi www.google.com
non si risolve direttamente in indirizzi IP, ma in un alias che si risolve da solo in più indirizzi IP. Per ulteriori informazioni sugli alias, consultare qui . Naturalmente, è possibile il caso in cui un alias abbia un singolo indirizzo IP, come mostrato di seguito:
$ 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
Ma gli alias possono essere concatenati? La risposta è si:
$ 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
Non ho trovato alcun esempio in cui un nome host si risolva in un alias che non si risolve in un indirizzo IP, ma penso che potrebbe verificarsi il caso.
Più di più indirizzi IP e alias, ci sono altri casi speciali ... che dire di IPv6? Puoi provare:
$ 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
Dove il nome host ipv6.google.com
è un nome host solo IPv6. Che dire dei nomi host dual-stack:
$ 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::
Ancora su IPv6, se il tuo host è solo IPv4, puoi comunque risolvere gli indirizzi IPv6 (testato su un IPX solo WinXP IPv e con ipv6.google.com, puoi provarlo su Linux). In questo caso, la risoluzione ha esito positivo, ma un ping ha esito negativo con un messaggio di errore host sconosciuto . Questo potrebbe essere un caso in cui il tuo scripting non riesce.
Spero che queste osservazioni siano state utili.
getent <ahosts|ahostsv4|ahostsv6|hosts> <hostname>
risposta sia da qualche parte laggiù vicino al fondo. È il più semplice, non richiede pacchetti extra ed è anche più facile da analizzare da uno script Bash.