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

Comentários

  • Então, onde o nome do host -A obtém suas informações? Eu estava tendo um problema com outro software instalado no sistema que não pude ' corrigir até que o nome do host -A mostrasse o nome correto.
  • ps, tentei corrigir seu endereço 127.0.1.1 para 127.0.0.1, mas as edições exigem no mínimo 6 caracteres. Talvez você possa corrigi-lo.
  • @Rothgar 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 com hostname -A.
  • @ vinc17: I don ' acho que o nome do nó é relativo aqui. A principal diferença é hostname -f use /etc/hosts, enquanto hostname -A use pesquisa de dns. Veja mais aqui: bugs.debian.org/cgi-bin/bugreport.cgi?bug=718393
  • @ vinc17: run strace hostname -A para ver o que acontece.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *