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";
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 conhostname -A
.hostname -f
use/etc/hosts
, mientras quehostname -A
usa la búsqueda de dns. Vea más aquí: bugs.debian.org/cgi-bin/bugreport.cgi?bug=718393strace hostname -A
para ver qué pasa.