Tengo una máquina a la que le cambié el nombre de host. Lo cambié en /etc/hosts, /etc/sysconfig/network y con el comando hostname. hostname devuelve el nombre corto correcto, hostname --fqdn devuelve el FQDN esperado, pero hostname -A devuelve un antiguo nombre. Cambié la dirección IP de la máquina para asegurarme de que no era una caché de DNS externa.

Si abro Python y ejecuto

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

Ambos devuelven el antiguo nombre de host / fqdn, el mismo que hostname -A

En la página de manual del nombre de host aparece --fqdn simplemente toma el nombre corto y el dominio y los pone juntos.

Muestra el FQDN (Nombre de dominio completo). Un FQDN consta de un nombre de host corto y el Nombre de dominio DNS. A menos que esté usando bind o NIS para búsquedas de host, puede cambiar el FQDN y el nombre de dominio DNS (que es parte del FQDN) en el archivo / etc / hosts.

¿Cuál es la diferencia entre estos comandos y cómo puedo solucionar mejor por qué el antiguo nombre de host se queda?

Comentarios

  • ¿Qué tal el linux / unix específico y la identificación de la versión? Hay casos en los que esta información reside en otro lugar y se configura en el momento del arranque. e de otros archivos de configuración.
  • Red Hat Enterprise Linux 6.4

Respuesta

hostname devuelve el nombre de host o nombre de nodo configurado. En la práctica, puede ser un nombre corto (en la mayoría de las configuraciones) o un nombre largo (normalmente el FQDN en este caso). El nombre corto viene dado por hostname --short.

hostname --fqdn devuelve el FQDN, que es gethostbyname en el nombre de nodo (como lo devuelve la llamada al sistema uname, consulte la página de manual de uname(2)).

hostname -A es algo oscuro y no intuitivo. En particular, a pesar de su nombre y descripción («todos los FQDN»), no proporciona el FQDN estándar, por diseño. Por lo tanto, yo diría: no lo use. Una razón es que pierde direcciones IP válidas de la máquina, como 127.0.1.1, con el que el FQDN puede estar asociado en el archivo /etc/hosts (este es actualmente el predeterminado en Debian y Ubuntu, por ejemplo). Otro problema con el hostname -A El método es que la resolución inversa de una dirección IP no necesariamente da un FQDN; puede ser simplemente un nombre corto.

Con respecto a su problema con Python, puede que haya un error. No lo sé. Le sugiero que pruebe el siguiente script en Perl:

#!/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"; 

Comentarios

  • Entonces, ¿de dónde obtiene la información el nombre de host -A? Estaba teniendo un problema con otro software instalado en el sistema que no pude ' t arreglar hasta que el nombre de host -A mostrara el nombre correcto.
  • ps, intenté arreglar tu dirección 127.0.1.1 en 127.0.0.1 pero las ediciones requieren un mínimo de 6 caracteres. Tal vez puedas arreglarlo.
  • @Rothgar hostname -A mira las interfaces configuradas y las resuelve al revés (bueno, esta es la información proporcionada en su página de manual). 127.0.1.1 es la dirección IP correcta en mi respuesta, no 127.0.0.1. El hecho de que 127.0 .1.1 se usa para el FQDN (en lugar de 127.0.0.1) es una de las causas del problema con hostname -A.
  • @ vinc17: I don ' t creo que nodename es relativo aquí. La principal diferencia es hostname -f use /etc/hosts, mientras que hostname -A usa la búsqueda de dns. Vea más aquí: bugs.debian.org/cgi-bin/bugreport.cgi?bug=718393
  • @ vinc17: ejecute strace hostname -A para ver qué pasa.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *