Jai une machine dont jai changé le nom dhôte. Je lai changé dans /etc/hosts
, /etc/sysconfig/network
et avec la commande hostname
. hostname
renvoie le nom court correct, hostname --fqdn
renvoie le FQDN attendu, mais hostname -A
renvoie un ancien Nom. Jai changé ladresse IP de la machine pour massurer quil ne sagissait pas de cache DNS externe.
Si jouvre python et que jexécute
import socket print(socket.gethostname()) print(socket.getfqdn())
Les deux renvoient lancien nom dhôte / fqdn, identique à hostname -A
Sur la page de manuel du nom dhôte, il apparaît --fqdn
prend simplement le nom court et le domaine et les assemble.
Afficher le FQDN (nom de domaine complet). Un FQDN se compose dun nom dhôte court et Nom de domaine DNS. À moins que vous nutilisiez bind ou NIS pour les recherches dhôte, vous pouvez modifier le FQDN et le nom de domaine DNS (qui fait partie du FQDN) dans le fichier / etc / hosts.
Quelle est la différence entre ces commandes et comment puis-je mieux comprendre pourquoi lancien nom dhôte persiste.
Commentaires
- Que diriez-vous de lidentification spécifique de Linux / Unix et de la version. Dans certains cas, ces informations résident ailleurs et sont configurées au démarrage e à partir dautres fichiers de configuration.
- Red Hat Enterprise Linux 6.4
Réponse
hostname
renvoie le nom dhôte ou le nom de nœud configuré. En pratique, il peut sagir dun nom court (dans la plupart des configurations) ou dun nom long (normalement le FQDN dans ce cas). Le nom court est donné par hostname --short
.
hostname --fqdn
renvoie le FQDN, qui est gethostbyname
sur le nom du nœud (tel que renvoyé par lappel système uname
, voir la page de manuel uname(2)
).
hostname -A
est quelque chose dobscur et de non intuitif. En particulier, malgré son nom et sa description («tous les FQDN»), il ne donne pas le FQDN standard, par conception. Ainsi je dirais: ne lutilisez pas. Une des raisons est quil manque les adresses IP valides de la machine, comme 127.0.1.1, auquel le FQDN peut être associé dans le fichier /etc/hosts
(il sagit actuellement de la valeur par défaut sous Debian et Ubuntu, par exemple). Un autre problème avec le hostname -A
est que la résolution inverse dune adresse IP ne donne pas nécessairement un FQDN; ce peut être juste un nom court.
Concernant votre problème avec python, il peut y avoir un bogue. Je ne sais pas. Je vous suggère dessayer le script Perl suivant:
#!/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";
hostname -A
examine les interfaces configurées et les résout à lenvers (enfin, ce sont les informations données dans sa page de manuel). 127.0.1.1 est la bonne adresse IP dans ma réponse, pas 127.0.0.1. Le fait que 127.0 .1.1 est utilisé pour le FQDN (au lieu de 127.0.0.1) est lune des causes du problème avechostname -A
.hostname -f
utilise/etc/hosts
, tandis quehostname -A
utilise la recherche DNS. Pour en savoir plus: bugs.debian.org/cgi-bin/bugreport.cgi?bug=718393strace hostname -A
pour voir ce qui se passe.