linux hostname -f o comando não está funcionando no RHEL

12

Estou executando um RHEL 5.7 e o comando hostname me fornece o nome de host correto.
Mas hostname -s e hostname -f return: Unknown host . Por quê?

    
por redoc 02.10.2014 / 16:18

1 resposta

19

(copiado de uma das minhas respostas sobre SF )

O comando hostname retorna resultados do DNS e /etc/hosts .

hostname é equivalente a uname -n e é o "hostname" ou "nodename" real da caixa.
Todos os outros argumentos hostname usam esse nome de nó para procurar informações.

Portanto, antes de prosseguir, devo explicar o formato do arquivo /etc/hosts .
O primeiro campo é bastante óbvio, é o endereço IP que todos os nomes de host na linha devem resolver. O segundo campo é o nome do host principal desse IP. Os campos restantes são aliases.

Portanto, se você executar hostname -f , ele tentará primeiro resolver o IP do seu nome de nó. Dependendo de como você tem a entrada hosts: configurada em /etc/nsswitch.conf , esse método irá variar.

  • Se você tiver configurado para usar o dns, ele usará os domínios de pesquisa configurados em /etc/resolv.conf até receber um IP de volta do DNS.
  • Se você tiver configurado para usar arquivos, procurará em /etc/hosts para encontrar uma linha em que o nome do host principal ou o nome do alias seja seu nome de nó atual ( uname -n ) e retorne o endereço IP nessa linha .

Quando tiver o IP, ele tentará uma pesquisa inversa nesse IP. Novamente, ele usará DNS para esse e seu arquivo de hosts com base em seu nsswitch.conf . No caso de usar seu arquivo de hosts, ele retornará a entrada principal (que é o primeiro campo após o IP no arquivo).

hostname -a só funcionará com o arquivo hosts, já que fazer uma pesquisa reversa no DNS fornece apenas 1 resultado. Com o arquivo hosts, ele retorna o alises na linha correspondente (que é tudo após a primeira entrada, o hostname primário).

Em suma, o motivo provável para o seu problema é que você não tem nenhuma entrada em /etc/hosts que contenha seu nome de host ( uname -n ).

Exemplos
Se o nome do seu nó for 'foobar' e você tiver uma entrada em /etc/hosts como esta:

127.0.0.1 foobar.example.com foobar localhost.localdomain localhost

Então você obterá os seguintes resultados de comando:

# hostname
foobar
# uname -n
foobar

# hostname -f
foobar.example.com

# hostname -a
foobar localhost.localdomain localhost
    
por 02.10.2014 / 16:59

Tags