Ich habe einen Computer, dessen Hostname ich geändert habe. Ich habe es in /etc/hosts, /etc/sysconfig/network und mit dem Befehl hostname geändert. hostname gibt den korrekten Kurznamen zurück, hostname --fqdn gibt den erwarteten vollqualifizierten Domänennamen zurück, hostname -A gibt einen alten zurück Name. Ich habe die IP-Adresse des Computers geändert, um sicherzustellen, dass es sich nicht um einen externen DNS-Cache handelt.

Wenn ich Python öffne und

import socket print(socket.gethostname()) print(socket.getfqdn()) 

Beide geben den alten Hostnamen / fqdn zurück, der mit hostname -A

identisch ist. Auf der Manpage zum Hostnamen wird --fqdn angezeigt Nimmt einfach den Kurznamen und die Domain und fügt sie zusammen.

Zeigt den vollqualifizierten Domänennamen (FQDN) an. Ein vollqualifizierter Domänenname besteht aus einem kurzen Hostnamen und dem DNS-Domänenname: Sofern Sie für Host-Lookups keine Bindung oder NIS verwenden, können Sie den vollqualifizierten Domänennamen und den DNS-Domänennamen (der Teil des vollqualifizierten Domänennamens ist) in der Datei / etc / hosts ändern.

Was ist der Unterschied zwischen diesen Befehlen und wie kann ich besser beheben, warum der alte Hostname erhalten bleibt.

Kommentare

  • Wie wäre es mit der spezifischen Linux / Unix- und Versionsidentifikation? Es gibt Fälle, in denen sich diese Informationen an anderer Stelle befinden und beim Booten eingerichtet werden e aus anderen Konfigurationsdateien.
  • Red Hat Enterprise Linux 6.4

Antwort

hostname gibt den konfigurierten Hostnamen oder Knotennamen zurück. In der Praxis kann es sich entweder um einen Kurznamen (in den meisten Konfigurationen) oder um einen Langnamen (in diesem Fall normalerweise um den vollqualifizierten Domänennamen) handeln. Der Kurzname wird durch hostname --short angegeben.

hostname --fqdn gibt den vollqualifizierten Domänennamen zurück, der auf dem Knotennamen (wie vom Systemaufruf uname zurückgegeben, siehe uname(2) Manpage).

hostname -A ist etwas Dunkles und Nicht-Intuitives. Insbesondere gibt es trotz seines Namens und seiner Beschreibung („alle FQDNs“) nicht den Standard-FQDN an. Daher würde ich sagen: Verwenden Sie ihn nicht. Ein Grund ist, dass gültige IP-Adressen des Computers fehlen. B. 127.0.1.1, mit dem der vollqualifizierte Domänenname in der Datei /etc/hosts verknüpft sein kann (dies ist derzeit beispielsweise die Standardeinstellung unter Debian und Ubuntu). Ein weiteres Problem mit der hostname -A Methode ist, dass die umgekehrte Auflösung einer IP-Adresse nicht unbedingt einen FQDN ergibt; Es kann nur ein kurzer Name sein.

In Bezug auf Ihr Problem mit Python kann es dort ein Fehler sein. Ich weiß es nicht. Ich schlage vor, dass Sie das folgende Perl-Skript ausprobieren:

#!/usr/bin/env perl use strict; use POSIX; my $nodename = (POSIX::uname)[1]; print "Nodename: $nodename\n"; my @ghbn = gethostbyname $nodename; print "FQDN: $ghbn[0]\n"; $ghbn[0] !~ /\./ && $ghbn[1] =~ /(\S+\.\S+)/ and print "Fixed FQDN from aliases: $1\n"; 

Kommentare

  • Woher bezieht Hostname -A seine Informationen? Ich hatte ein Problem mit anderer auf dem System installierter Software, das ich nicht ' beheben konnte, bis Hostname -A den richtigen Namen zeigte.
  • ps, ich habe versucht, Ihre 127.0.1.1-Adresse auf 127.0.0.1 zu korrigieren, aber für Änderungen sind mindestens 6 Zeichen erforderlich. Vielleicht können Sie das beheben.
  • @Rothgar hostname -A betrachtet die konfigurierten Schnittstellen und löst sie rückwärts auf (nun, dies sind die Informationen auf der Manpage). 127.0.1.1 ist die richtige IP-Adresse in meiner Antwort, nicht 127.0.0.1. Die Tatsache, dass 127.0 .1.1 wird für den vollqualifizierten Domänennamen verwendet (anstelle von 127.0.0.1). Dies ist eine Ursache für das Problem mit hostname -A.
  • @ vinc17: Ich habe ' Ich glaube nicht, dass der Knotenname hier relativ ist. Der Hauptunterschied besteht darin, dass hostname -f /etc/hosts verwendet, während hostname -A DNS-Suche verwenden. Weitere Informationen finden Sie hier: bugs.debian.org/cgi-bin/bugreport.cgi?bug=718393
  • @ vinc17: run strace hostname -A, um zu sehen, was passiert.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.