Der hostname
Befehl gibt Ergebnisse von DNS und zurück /etc/hosts
.
hostname
ist gleichbedeutend mit uname -n
und ist der tatsächliche "Hostname" oder "Knotenname" der Box.
Alle anderen hostname
Argumente verwenden diesen Knotennamen, um Informationen nachzuschlagen.
Bevor ich fortfahre, sollte ich das /etc/hosts
Dateiformat erläutern .
Das erste Feld ist ziemlich offensichtlich. Es ist die IP-Adresse, in die alle Hostnamen in der Leitung aufgelöst werden sollen. Das zweite Feld ist der primäre Hostname für diese IP. Die restlichen Felder sind Aliase.
Wenn Sie also ausführen hostname -f
, wird zuerst versucht, die IP für Ihren Knotennamen aufzulösen. Je nachdem, wie Sie den hosts:
Eintrag in /etc/nsswitch.conf
dieser Methode konfiguriert haben, variiert er.
- Wenn Sie es für die Verwendung
/etc/resolv.conf
von DNS konfiguriert haben, werden die darin konfigurierten Suchdomänen verwendet, bis es eine IP von DNS zurückerhält.
- Wenn Sie es für die Verwendung von Dateien konfiguriert haben, sucht es in
/etc/hosts
einer Zeile, in der entweder der primäre Hostname oder der Aliasname Ihr aktueller Knotenname ( uname -n
) ist, und gibt dann den primären Hostnamen in dieser Zeile zurück.
Sobald es die IP hat, versucht es eine umgekehrte Suche auf dieser IP. Wieder wird DNS für diese und Ihre Hosts-Datei basierend auf Ihrer verwendet nsswitch.conf
. Wenn Sie Ihre Hosts-Datei verwenden, wird der primäre Eintrag zurückgegeben (dies ist das erste Feld nach der IP in der Datei).
hostname -a
funktioniert nur mit der Hosts-Datei, da eine umgekehrte Suche in DNS nur 1 Ergebnis liefert. Mit der Hosts-Datei werden die Alises in der übereinstimmenden Zeile zurückgegeben (dies ist alles nach dem ersten Eintrag, dem primären Hostnamen).
Beispiele
Wenn Ihr Knotenname "foobar" ist und Sie einen Eintrag /etc/hosts
wie diesen haben:
127.0.0.1 foobar.example.com foobar localhost.localdomain localhost
Dann erhalten Sie die folgenden Befehlsergebnisse:
# hostname
foobar
# uname -n
foobar
# hostname -f
foobar.example.com
# hostname -a
foobar localhost.localdomain localhost
/etc/hosts
.hostname
würde den Hostnamen als einen der Aliase finden und den ersten Eintrag in der Zeile für meinen Host zurückgeben. Vielen Dank!