Die bisher angegebenen Lösungen funktionieren meist im einfacheren Fall: Der Hostname wird direkt in eine einzelne IPv4-Adresse aufgelöst. Dies ist möglicherweise der einzige Fall, in dem Sie Hostnamen auflösen müssen. Wenn dies nicht der Fall ist, finden Sie im Folgenden eine Erläuterung einiger Fälle, die Sie möglicherweise behandeln müssen.
Chris Down und Heinzi diskutierten kurz den Fall, in dem der Hostname in mehr als eine IP-Adresse aufgelöst wird. In diesem Fall (und in den folgenden Fällen) kann die grundlegende Skripterstellung unter der Annahme, dass ein Hostname direkt in eine einzelne IP-Adresse aufgelöst wird, zum Erliegen kommen. Unten ein Beispiel mit einem Hostnamen, der in mehr als eine einzelne IP-Adresse aufgelöst wird:
$ 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
Aber was ist www.l.google.com
? Hier muss der Alias eingeführt werden. Schauen wir uns das folgende Beispiel an:
$ 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
Wird www.google.com
also nicht direkt in IP-Adressen aufgelöst, sondern in einen Alias, der sich in mehrere IP-Adressen auflöst. Weitere Informationen zu Aliasnamen finden Sie hier . Natürlich ist der Fall möglich, in dem ein Alias eine einzelne IP-Adresse hat, wie unten gezeigt:
$ 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
Aber können Aliase angekettet werden? Die Antwort ist ja:
$ 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
Ich habe kein Beispiel gefunden, bei dem ein Hostname in einen Aliasnamen aufgelöst wird, der nicht in eine IP-Adresse aufgelöst wird, aber ich denke, der Fall könnte eintreten.
Gibt es neben mehreren IP-Adressen und Aliasnamen noch einige andere Sonderfälle? Was ist mit IPv6? Du könntest es versuchen:
$ 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
Wobei der Hostname ipv6.google.com
ein IPv6-Hostname ist. Was ist mit Dual-Stack-Hostnamen:
$ 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::
Auch bei IPv6 können Sie IPv6-Adressen auflösen, wenn Ihr Host nur IPv4 ist (getestet unter WinXP nur IPv4 und mit ipv6.google.com können Sie es unter Linux versuchen). In diesem Fall ist die Auflösung erfolgreich, aber ein Ping schlägt mit einer unbekannten Hostfehlermeldung fehl . Dies kann ein Fall sein, in dem Ihre Skripterstellung fehlschlägt.
Ich hoffe, diese Bemerkungen waren nützlich.
getent <ahosts|ahostsv4|ahostsv6|hosts> <hostname>
Antwort irgendwo unten in der Nähe des Bodens ist. Es ist das einfachste, erfordert keine zusätzlichen Pakete und ist auch einfacher aus einem Bash-Skript zu analysieren.