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

13

Estou executando um RHEL 5.7 e o hostnamecomando me fornece o nome de host correto.
Mas hostname -se hostname -fvoltar: Unknown host. Por quê?

redoc
fonte
Que distro? No meu sistema Ubuntu 12.04, todos os 3 funcionam.
Anthon
Qual sistema operacional você está usando? Se Linux, qual distribuição? Quais são os conteúdos /etc/hostname?
terdon
1
hostname -fusa DNS, você tem uma entrada DNS reversa para o seu IP?
Barmar
@terdon Estou usando RHEL5 (Red Hat Enterprise Linux versão do servidor 5,7 (tikanga)) e não existe tal arquivo (/ etc / hostname)
REDOC
@ Barmar Não tenho o DNS configurado no meu host. Eu adicionei o endereço IP e o fqdn no meu arquivo hosts (/ etc / hosts). Esse erro é resultado do DNS não estar configurado?
Redoc #

Respostas:

21

(copiado de uma das minhas respostas no SF )

O hostnamecomando retorna resultados do DNS e /etc/hosts.

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

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

Portanto, se você executá- hostname -flo, primeiro tentará resolver o IP do seu nome de nó. Dependendo de como você tem a hosts:entrada configurada /etc/nsswitch.confneste método, poderá variar.

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

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

hostname -afuncionará apenas com o arquivo hosts, pois fazer uma pesquisa inversa no DNS fornece apenas 1 resultado. Com o arquivo hosts, ele retorna os alises na linha correspondente (que é tudo após a primeira entrada, o nome do host principal).

 

Portanto, em resumo, o motivo provável do seu problema é que você não tem nenhuma entrada /etc/hostsque contenha seu nome de host ( uname -n).


Exemplos
Se o seu nome de nó for 'foobar' e você tiver uma entrada /etc/hostscomo 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
Patrick
fonte
Essa explicação de como obtém o valor é ótima! Eu tinha meu FQDN no final da linha 127.0.0.1 que tinha como nome de host principal localhost. Acabei de excluí-los e deixei o FQDN apenas na linha que possui o IP real e corrigi meu problema de nome do host -f retornando host local.
precisa saber é o seguinte