No unix (Solaris), existe algum comando que retorne o nome do host e o nome do domínio juntos?
Por exemplo:
hostname -> servername
domainname -> us.xyz.com
Eu preciso : servername.us.xyz.com
No unix (Solaris), existe algum comando que retorne o nome do host e o nome do domínio juntos?
Por exemplo:
hostname -> servername
domainname -> us.xyz.com
Eu preciso : servername.us.xyz.com
Respostas:
O comando
hostname --fqdn (or -f)
também pode fazer o que você quer ou não, pois no meu sistema recebo (none)
quando corrodomainname
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 Solaris hostname
. 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
$(hostname).$(domainname)
Você pode definir uma função ou alias do shell:
fqdn () {
echo $(hostname).$(domainname)
}
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}'
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.
domain=`check-hostname | nawk -F\. '{for(i=2; i<NF;i++){printf $i"."}printf $NF"\n"}'`
fqdn=`hostname`'.'${domain}
Eu fiz uma solução alternativa para hostname
e host
:
$ host $(hostname -i) | awk '{print $NF }'
(Estou usando Centos, mas deve funcionar em outro lugar)
Obtendo o domínio sem ponto final:
$ host $(hostname -i) | awk '{print substr($NF, 1, length($NF)-1)}'
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ões
host
comando? parece que seu comando host
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
getent hosts (backtick) /usr/bin/hostname (backtick)
ou
getent hosts $(/usr/bin/hostname)
exemplo:
root@melauto:[/]# getent hosts $(/usr/bin/hostname)
10.4.19.241 melauto.sro.vic.gov.au melauto loghost
root@melauto:[/]#
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
Em um script bash do Unix, no Sun Solaris 10, eu apenas exibi meu nome de host por:
echo "Meu nome do host é $ (hostname)"
printf "%s" "$(hostname) $(domainname)"
funciona?