Eu tenho uma máquina cujo nome de host mudei. Eu mudei em /etc/hosts
, /etc/sysconfig/network
e com o comando hostname
. hostname
retorna o nome abreviado correto, hostname --fqdn
retorna o FQDN esperado, mas hostname -A
retorna um antigo nome. Mudei o endereço IP da máquina para ter certeza de que não era um cache DNS externo.
Se eu abrir o python e executar
import socket print(socket.gethostname()) print(socket.getfqdn())
Ambos retornam o nome do host / fqdn antigo, o mesmo que hostname -A
Na página do manual do nome do host, aparece --fqdn
apenas pega o nome abreviado e o domínio e os coloca juntos.
Exibir o FQDN (nome de domínio totalmente qualificado). Um FQDN consiste em um nome de host abreviado e o Nome de domínio DNS. A menos que esteja usando bind ou NIS para pesquisas de host, você pode alterar o FQDN e o nome de domínio DNS (que faz parte do FQDN) no arquivo / etc / hosts.
Qual é a diferença entre esses comandos e como posso solucionar melhor o motivo pelo qual o nome do host antigo está permanecendo.
Comentários
- E quanto ao linux / unix específico e identificação da versão. Há casos em que esta informação reside em outro lugar e é configurada no tempo de inicialização e de outros arquivos de configuração.
- Red Hat Enterprise Linux 6.4
Resposta
hostname
retorna o nome do host ou nome do nó configurado. Na prática, pode ser um nome curto (na maioria das configurações) ou um nome longo (normalmente o FQDN, neste caso). O nome curto é dado por hostname --short
.
hostname --fqdn
retorna o FQDN, que é gethostbyname
no nome do nó (conforme retornado pela uname
chamada do sistema, consulte a uname(2)
página do manual).
hostname -A
é algo obscuro e não intuitivo. Em particular, apesar do nome e da descrição (“todos os FQDNs”), ele não fornece o FQDN padrão, por design. Portanto, eu diria: não o use. Uma razão é que ele perde endereços IP válidos da máquina, como 127.0.1.1, com o qual o FQDN pode estar associado ao arquivo /etc/hosts
(atualmente, esse é o padrão no Debian e Ubuntu, por exemplo). Outro problema com o hostname -A
método é que a resolução reversa de um endereço IP não fornece necessariamente um FQDN; pode ser apenas um nome curto.
Em relação ao seu problema com o python, pode ser um bug aí. Não sei. Sugiro que você tente o seguinte script 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
olha as interfaces configuradas e as resolve de forma reversa (bem, esta é a informação fornecida em sua página de manual). 127.0.1.1 é o endereço IP correto em minha resposta, não 127.0.0.1. O fato de que 127.0 .1.1 é usado para o FQDN (em vez de 127.0.0.1) é uma das causas do problema comhostname -A
.hostname -f
use/etc/hosts
, enquantohostname -A
use pesquisa de dns. Veja mais aqui: bugs.debian.org/cgi-bin/bugreport.cgi?bug=718393strace hostname -A
para ver o que acontece.