web-dev-qa-db-fra.com

Comment obtenir le nom d'hôte avec le nom de domaine?

Sous Unix (Solaris), existe-t-il une commande qui renvoie le nom d'hôte et le nom de domaine ensemble?

Par exemple:

hostname -> servername
domainname -> us.xyz.com

J'ai besoin : servername.us.xyz.com

18
Vikas

Cela fonctionnera si votre domaine est correctement défini dans resolv.conf. Vous pouvez également utiliser la commande domainname mentionnée par les autres si votre nom de domaine NIS est le même que votre domaine DNS.

echo `uname -n`.`awk '/^domain/ {print $2}' /etc/resolv.conf`
14
Nicholas

La commande

hostname --fqdn (or -f)

pourrait également faire ce que vous voulez ou non, car sur mon système, je reçois (none) lorsque j'exécute domainname

13
Elwillow

Celui-ci me dérange aussi depuis des années. Je travaille juste en disant

$(hostname).$(domainname)

Vous pouvez définir une fonction ou un alias Shell:

fqdn () {
    echo $(hostname).$(domainname)
}
5
Alexios

check-hostname | awk '{print $ NF}'

4
ealgumby

Je sais que c'est un fil plus ancien mais j'avais besoin de tirer le nom d'hôte et le nom de domaine séparément dans un script.

la réponse d'ealgumby à l'utilisation de check-hostname était quelque chose que je n'avais jamais vu auparavant, je l'ai donc essayé avec succès pour mes besoins. Je dirais que c'est utile mais apparemment, je n'ai pas de représentant pour le faire.

J'ai défini le domaine comme suit en parcourant la sortie de check-hostname.

domain=`check-hostname | nawk -F\. '{for(i=2; i<NF;i++){printf $i"."}printf $NF"\n"}'`
fqdn=`hostname`'.'${domain}
2
ASG

J'ai fait un petit contournement pour hostname et Host:

$ Host $(hostname -i) | awk '{print $NF }'

(J'utilise Centos mais cela devrait fonctionner ailleurs)

Obtenir le domaine sans point de fuite:

$ Host $(hostname -i) | awk '{print substr($NF, 1, length($NF)-1)}'
1
user1314742

Sur Solaris, cela a bien fonctionné pour moi: désolé pour le backtick, c'est la citation inversée à côté du numéro 1 sur un clavier qwerty ou vous pouvez utiliser $ (commande) dans KSH

getent hosts (backtick) /usr/bin/hostname (backtick)

ou

getent hosts $(/usr/bin/hostname)

exemple:

root@melauto:[/]# getent hosts $(/usr/bin/hostname)

10.4.19.241     melauto.sro.vic.gov.au melauto loghost
root@melauto:[/]# 

getent interroge le mécanisme de recherche de nom actuel comme spécifié dans /etc/nsswitch.conf et retourne les informations qui correspondent à la recherche, ici il renvoie les informations telles que trouvées dans /etc/hosts. si vous recherchez les informations d'hôte pour un autre hôte qui n'est pas dans /etc/hosts, il cherchera dans DNS à condition que ce soit défini dans /etc/nsswitch.conf

0
Blaise