Dienstprogramme mögen host
und dig
lassen Sie die IP-Adresse sehen, die dem Hostnamen entspricht.
Es gibt auch das getent
Dienstprogramm, mit dem Abfragen /etc/hosts
oder andere NSS-Datenbanken durchgeführt werden können.
Ich bin auf der Suche nach einem praktischen Standard-Dienstprogramm (das beispielsweise in Debian verfügbar ist), das einen Hostnamen auflöst, unabhängig davon, wo er definiert ist.
Es sollte mehr oder weniger gleichwertig sein mit
ping "$HOST" | head -1 | perl -lne '/\((.*?)\)/ && print $1'
getent
?getent
auch in DNS aussieht (ich dachte, es schaut nur in/etc/hosts
). Nun, da ich es ausprobiert habe, ist Folgendes falschgetent
: Denngoogle.com
es gibt eine einzelne Adresse zurück, und diese Adresse ist IPv6. Das ist nicht hilfreich, da ich in einem IPv4-Netzwerk bin und mein Befehl tatsächlich eine IPv4-Adresse ausgeben würde.Antworten:
Der einzige Befehl, von dem ich weiß, dass er das tut, was Sie wollen, ist resolveip:
http://linux.die.net/man/1/resolveip
Es kommt jedoch nur mit MySQL-Server, die möglicherweise nicht überall ideal zu installieren sind.
quelle
Wenn das Problem darin besteht, dass Sie diese Namen nicht mit ipv6 auflösen möchten, bitten Sie getent, nur ipv4 zu verwenden. Dadurch werden alle IPv4-Adressen aufgelistet:
quelle
ahostsv6
.getent ahosts google.com
.Die Sache ist, es gibt mehrere APIs, um Hostnamen wie aufzulösen
gethostbyname
,getaddrinfo
undinet_pton
einige von diesen können mehr als eine Adresse zurückgeben und / oder Sie können den gewünschten Adresstyp abfragen.Wenn Sie einen portablen Weg suchen, um eine IPv4-Adresse zu erhalten, dann vielleicht:
quelle
(Diese Antwort gilt nur, wenn Sie als Root auf dem Computer angemeldet sind.)
Das hat mich früher auch geärgert, und dann habe ich standardisiert, dnsmasq auf allen meinen Rechnern auszuführen . Dnsmasq ist ein einfacher DNS-Cache. Als Nebeneffekt wird der Inhalt von
/etc/hosts
über DNS bereitgestellt.quelle
gethostip -d name.domain
aus demsyslinux
Paket auf Ubuntu (und wahrscheinlich Debian).-d
gibt das Dezimalformat aus.quelle
Ich habe mein reines Perl-Wissen genutzt und ein kleines Skript mit Fehlerbehandlung erstellt:
/ usr / local / bin / gethostip:
Vielen Dank an Stéphane Chazelas für die erste Idee
quelle