Eu testei hostname
em vários servidores (RedHat, Ubuntu) e hostname -f
provou não ser confiável, retornando algumas vezes apenas o nome abreviado (conforme descrito nesta pergunta ).
Eu posso ver o fqn nos aliases: hostname -a
(um dos aliases é o fqn que procuro), mas a ordem dos aliases não é fixa.
Existe outra maneira de obter o nome completo e confiável e armazená-lo em uma variável bash?
Respostas:
Eu tentei isso no CentOS5:
host -TtA $SERVERNAME|grep "has address"|awk '{print $1}'
Eu tenho que consultar meu DNS no modo TCP. Se o UDP funcionar no seu ambiente, deixe de lado a opção "T".
Nota: em um convidado do Ubuntu (VirtualBox), não funcionará:
Então, para cobrir todos os casos:
fonte
host -TtA $(hostname -s)|grep "has address"|awk '{print $1}'
trabalhar em meus servidores RedHatAqui está uma maneira de encontrar o fqn:
Em outras palavras, eu tive que
nslookup
o endereço IP, o que me dá algo como:A partir daí, era apenas uma questão de remover o que eu não queria, através de manipulações de strings do bash .
Talvez haja uma maneira mais simples?
fonte
Seu método funciona apenas se você tiver configurado corretamente o nome do host e as configurações corretas de DNS, etc. Se você tiver tudo isso, já conhece o seu fqdn.
Não há uma maneira confiável de obter o fqdn. Um único endereço IP pode ter vários fqdn e um único fqdn pode ter vários endereços IP ... e muitos IP não têm nenhum fqdn.
Se sua máquina estiver diretamente conectada à Internet, basta usar o endereço IP e fazer uma solicitação DNS reversa:
host 1.2.3.4
Mas isso muitas vezes não fornece a resposta desejada (tente com o google, por exemplo).
fonte
host
para obter apenas o registro A (ou faça uma pesquisa correspondente).Não
hostname --fqdn
funciona para você?fonte
hostname --fqdn
retorna o nome abreviado, com o fqdn definido como um dos aliases do nome do host.-f
e--fqdn
é a mesma coisa.No Ubuntu, você pode fazer
hostname -A
fonte
Para uma alternativa multiplataforma, se você não se importa em usar python (roda pelo menos no python 2.7 e python 3)
fonte
Um método somente para bash seguro do OS X, que provavelmente não funcionará com outros sabores * nix devido a variações na saída do comando:
Provavelmente, o Python é sua melhor aposta para uma ampla compatibilidade.
fonte