Não printf "%s" "$(hostname) $(domainname)"funciona?
Jasonwryan
tente usar "hostname -f" que será suficiente i espero que sim
Abhishek Kumar Srivastava
Respostas:
14
Isso funcionará se o seu domínio estiver definido corretamente no resolv.conf. Você também pode usar o comando domainname que os outros mencionaram se seu nome de domínio NIS for o mesmo que seu domínio DNS.
De acordo com a página de manual hostname(1)do Solaris 10 (no sun4v) e todas as versões anteriores que usei, --fqdnnão estão disponíveis. Ele apenas tenta definir o nome do host para --fqdn. Se você executá-lo como um não superusuário, por segurança, ele diz 'uname: erro ao definir o nome: Não é o proprietário'. Este é obviamente o estoque Solaris hostname. O pôster não indica se eles têm ou não o conjunto de ferramentas GNU instalado.
Alexios
5
Este também me incomoda há anos. Eu apenas trabalho em torno disso dizendo
domainnnamena verdade relata seu domínio NIS se você estiver executando o NIS. Este não é necessariamente o mesmo que o seu nome de domínio DNS.
Magellan
Não é não. Mas desde que eu consegui fugir / evitar o NIS desde que era Páginas Amarelas, nunca soube disso. :) Então é lá uma maneira confiável para obter o nome de domínio se o NIS é diferente?
Alexios
Você deve se sentir abençoado por ter evitado o NIS. É irritante. E até a equipe do Mozilla Thunderbird estragou tudo, pois dependia da saída 'domainname' para a resposta padrão na 2.0. Para nome de domínio real, eu usohostname --fqdn | cut -d. -f2-4
Magellan
11
Isso funciona bem no Linux. No Solaris, pelo menos, até 10, hostname --fqdndefina o nome do host como '--fqdn', o que provavelmente é uma má ideia (por isso, verifique se você não é root, se tentar). :) É --fqdnsuportado no Solaris 11?
Alexios
11
Oi! A definição inadvertida do nome do host seria uma dor, e o OP disse Solaris. Obrigado!
Por favor, explique um pouco para não especialistas.
vonbrand
Sinopse / usr / sbin / check-hostname Descrição O script check-hostname é um auxílio à migração para o sendmail (1M). Este script tenta determinar o nome completo do host (FQHN) do host local de maneira semelhante ao sendmail (1M). Se check-hostname puder determinar o FQHN do host local, ele relatará sucesso. Caso contrário, o check-hostname informa como reconfigurar o sistema para que o FQHN possa ser determinado adequadamente.
ealgumby
/ usr / sbin / check-hostname reportará o FQDN, se definido, nos sistemas Solaris. Pipetar a saída para awk e usar print $ NF apenas relata o último campo de saída de check-hostname, que é o FQDN. Este é o método mais direto de que conheço para obter essas informações na linha de comando, supondo que você tenha um nome de domínio totalmente qualificado. Caso contrário, isso não funcionará, mas não senti a necessidade de mostrar isso, pois nesse caso o nome do host é tudo que você tem. Se você não estiver usando o Solaris, isso também não funcionará, mas a consulta foi direcionada ao Solaris.
ealgumby
Sério, eu não entendo como isso não responde à pergunta, que era: "No unix (Solaris), existe algum comando que retorne o nome do host e o nome do domínio juntos?" A resposta é "sim", e esse comando é: check-hostname | awk '{print $ NF}'
ealgumby
3
A resposta real está nos seus comentários. Dar um comando de uma linha com pouca (ou no seu caso, nenhuma) explicação não é o tipo de resposta que este site trata.
rahmu
2
Eu sei que esse é um segmento mais antigo, mas eu precisava puxar o nome do host e o nome do domínio separadamente em um script.
A resposta de ealgumby ao uso de check-hostname era algo que eu nunca tinha visto antes, então tentei obter grande sucesso para minhas necessidades. Eu o marcaria como útil, mas aparentemente não tenho o representante para fazê-lo.
Defino o domínio da seguinte forma, percorrendo a saída de check-hostname.
no meu ubuntu, hostname -iimprima o endereço IP correspondente ao nome do host.
Archemar 06/07/2015
Sim, está certo, então eu passo este IP ao host comando. Isso vai te dar algo como isto: YOUR_IP.in-addr.arpa domain name pointer hostname.domainname. com awk fico com a última coluna que éhostname.domainname
user1314742
Eu vejo, infelizmente usando host $(hostname -i)me dar uma lista de 8 hostname, todos com o mesmo IP, e nenhum nome de host correspondente a meus anfitriões
Archemar
tem certeza de que não possui aliases de hostcomando? parece que seu comando hosttem um alias parahost -a
user1314742
0
No Solaris, isso funcionou bem para mim: desculpe pelo backtick, é a cotação invertida ao lado do número 1 em um teclado qwerty ou você pode usar $ (command) no KSH
O getent consulta o mecanismo de pesquisa de nomes atual conforme especificado em /etc/nsswitch.conf e retorna as informações que correspondem à pesquisa. Aqui, ele retorna as informações encontradas em /etc/hosts. se você procurar as informações do host de outro host que não está /etc/hosts, ele procurará no DNS, desde que seja o definido em/etc/nsswitch.conf
printf "%s" "$(hostname) $(domainname)"
funciona?Respostas:
Isso funcionará se o seu domínio estiver definido corretamente no resolv.conf. Você também pode usar o comando domainname que os outros mencionaram se seu nome de domínio NIS for o mesmo que seu domínio DNS.
fonte
O comando
também pode fazer o que você quer ou não, pois no meu sistema recebo
(none)
quando corrodomainname
fonte
hostname(1)
do Solaris 10 (no sun4v) e todas as versões anteriores que usei,--fqdn
não estão disponíveis. Ele apenas tenta definir o nome do host para--fqdn
. Se você executá-lo como um não superusuário, por segurança, ele diz 'uname: erro ao definir o nome: Não é o proprietário'. Este é obviamente o estoque Solarishostname
. O pôster não indica se eles têm ou não o conjunto de ferramentas GNU instalado.Este também me incomoda há anos. Eu apenas trabalho em torno disso dizendo
Você pode definir uma função ou alias do shell:
fonte
domainnname
na verdade relata seu domínio NIS se você estiver executando o NIS. Este não é necessariamente o mesmo que o seu nome de domínio DNS.hostname --fqdn | cut -d. -f2-4
hostname --fqdn
defina o nome do host como '--fqdn', o que provavelmente é uma má ideia (por isso, verifique se você não é root, se tentar). :) É--fqdn
suportado no Solaris 11?check-hostname | awk '{print $ NF}'
fonte
Eu sei que esse é um segmento mais antigo, mas eu precisava puxar o nome do host e o nome do domínio separadamente em um script.
A resposta de ealgumby ao uso de check-hostname era algo que eu nunca tinha visto antes, então tentei obter grande sucesso para minhas necessidades. Eu o marcaria como útil, mas aparentemente não tenho o representante para fazê-lo.
Defino o domínio da seguinte forma, percorrendo a saída de check-hostname.
fonte
Eu fiz uma solução alternativa para
hostname
ehost
:(Estou usando Centos, mas deve funcionar em outro lugar)
Obtendo o domínio sem ponto final:
fonte
hostname -i
imprima o endereço IP correspondente ao nome do host.host
comando. Isso vai te dar algo como isto:YOUR_IP.in-addr.arpa domain name pointer hostname.domainname.
com awk fico com a última coluna que éhostname.domainname
host $(hostname -i)
me dar uma lista de 8 hostname, todos com o mesmo IP, e nenhum nome de host correspondente a meus anfitriõeshost
comando? parece que seu comandohost
tem um alias parahost -a
No Solaris, isso funcionou bem para mim: desculpe pelo backtick, é a cotação invertida ao lado do número 1 em um teclado qwerty ou você pode usar $ (command) no KSH
ou
exemplo:
O getent consulta o mecanismo de pesquisa de nomes atual conforme especificado em /etc/nsswitch.conf e retorna as informações que correspondem à pesquisa. Aqui, ele retorna as informações encontradas em
/etc/hosts
. se você procurar as informações do host de outro host que não está/etc/hosts
, ele procurará no DNS, desde que seja o definido em/etc/nsswitch.conf
fonte
Em um script bash do Unix, no Sun Solaris 10, eu apenas exibi meu nome de host por:
echo "Meu nome do host é $ (hostname)"
fonte