Was ist der einfachste Weg, um die IP-Adresse von einem Hostnamen zu erhalten?
Ich dachte darüber nach, a zu versuchen ping
und es von der Ausgabe zu analysieren. Dies scheint jedoch nicht sehr schön zu sein und wird wahrscheinlich nicht auf allen Systemen gleich funktionieren.
Ich habe ein bisschen gesucht und Lösungen mit gefunden nslookup
, aber das funktioniert nicht für Hostnamen in /etc/hosts
.
Antworten:
Dies können Sie mit Standardsystemaufrufen tun. Hier ist ein Beispiel in Perl:
erzeugt die Ausgabe:
(Auf der Kommandozeile kann das gleiche Skript geschrieben werden:
perl -MSocket -MData::Dumper -wle'my @addresses = gethostbyname("google.com"); my @ips = map { inet_ntoa($_) } @addresses[4 .. $#addresses]; print Dumper(\@ips)'
)Sie können dies auch in anderen Sprachen tun - siehe Manpage für die Systemaufrufe unter
man -s3 gethostbyname
usw.quelle
perl -MSocket -MData::Dumper -wle'my @addresses = gethostbyname("www.google.com"); my @ips = map { inet_ntoa($_) } @addresses[4 .. $#addresses]; print $ips[0]'
.sed -e '/some people consider Perl a better form/s/better/worse/'
SCNRhost <hostname>
Ex:
Bearbeiten
Unter Linux (und zumindest einigen OS X-Varianten) können Sie möglicherweise Folgendes verwenden
resolveip
, das Teil des MySQL-Serverpakets ist:quelle
/etc/hosts
.) Versuchenhost localhost
.serv ~ $ host localhost \n localhost has address 127.0.0.1
resolveip
.resolveip
ist nicht standardmäßig auf meinem Debian installiert.Dieser alte Beitrag scheint viele kreative Lösungen zu haben.
Wenn ich sicherstellen muss, dass auch darauf
/etc/hosts
zugegriffen wird, verwende ich in der Regelgetent hosts somehost.com
Dies funktioniert, zumindest wenn `/etc/nsswitch.conf 'so konfiguriert wurde, dass Dateien verwendet werden (wie es normalerweise der Fall ist).
quelle
ahosts
mehrzeilige Informationen zurückgegeben werden.Für IPv4 gibt es ein Standardprogramm, das mit dem Resolver einschließlich / etc / hosts sofort funktioniert:
Es ist Teil von Debian, installieren Sie es mit:
Für andere Protokolle als IPv4 (wie IPv6) kenne ich derzeit kein ähnliches Tool. Update: Aus diesem Grund habe ich gerade ein kleines Tool geschrieben, das auch IPv6 auflösen kann:
https://github.com/hilbix/misc/blob/master/src/ipof.c
Es ist gedacht für eine schnelle und schmutzige Shell-Nutzung
gethostip
, erlaubt aber auch IPv6:Es kann auch interaktiv verwendet werden, zum Beispiel:
HTH
quelle
Nun, meine aktuelle Lösung:
quelle
sed
verhält sich das auf jedem System etwas anders. :) Wie nervig. Ich habe es ein bisschen geändert, ich denke, es sollte jetzt überall funktionieren.Warum nicht
dig +short hostname
?(DNS abfragen)
quelle
/etc/hosts
berücksichtigt.Auf einigen Unices funktioniert Folgendes:
Unter Mac OS X erhalte ich beispielsweise Folgendes:
quelle
arp -n hostname
zeigt die IP.Verwenden
ping
ist nicht so schlecht, da Sie im Allgemeinen keine starken Abhängigkeiten haben.Hier ist die Funktion, die ich auf Linux-Systemen verwendet habe:
quelle
quelle