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"; 

Commentaires

  • Alors, où hostname -A obtient-il ses informations? Javais un problème avec dautres logiciels installés sur le système que je ne pourrais pas ' résoudre jusquà ce que hostname -A affiche le nom correct.
  • ps, jai essayé de fixer votre adresse 127.0.1.1 à 127.0.0.1 mais les modifications nécessitent au minimum 6 caractères. Peut-être que vous pouvez le corriger.
  • @Rothgar 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 avec hostname -A.
  • @ vinc17: Je ne ' Je ne pense pas que le nom du nœud soit relatif ici. La principale différence est que hostname -f utilise /etc/hosts, tandis que hostname -A utilise la recherche DNS. Pour en savoir plus: bugs.debian.org/cgi-bin/bugreport.cgi?bug=718393
  • @ vinc17: run strace hostname -A pour voir ce qui se passe.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *