Ça printf "%s" "$(hostname) $(domainname)"ne marche pas?
jasonwryan
essayez d'utiliser "hostname -f" qui sera suffisant je l'espère
abhishek kumar srivastava
Réponses:
14
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.
Selon la page de manuel de hostname(1)Solaris 10 (sur sun4v) et toutes les anciennes versions que j'ai utilisées, elles --fqdnne sont pas disponibles. Il essaie simplement de définir le nom d'hôte sur --fqdn. Si vous l'exécutez en tant que non-superutilisateur pour des raisons de sécurité, il indique «uname: erreur dans le nom du paramètre: Pas propriétaire». C'est évidemment le stock Solaris hostname. L'affiche n'indique pas si le jeu d'outils GNU est installé ou non.
Alexios
5
Celui-ci me dérange aussi depuis des années. Je travaille juste en disant
$(hostname).$(domainname)
Vous pouvez définir une fonction shell ou un alias:
domainnnamesignale en fait votre domaine NIS si vous exécutez NIS. Ce n'est pas nécessairement le même que votre nom de domaine DNS.
Magellan
Non, ça ne l'est pas. Mais depuis que j'ai réussi à éluder / éviter NIS depuis qu'il s'agissait de Pages Jaunes, je ne l'ai jamais su. :) Existe - t - il donc un moyen fiable d'obtenir le nom de domaine si celui de NIS est différent?
Alexios
Vous devriez vous sentir béni d'avoir évité NIS. C'est ennuyant. Et même l'équipe de Mozilla Thunderbird a foiré celui-ci car ils dépendaient de la sortie de 'nom de domaine' pour la réponse par défaut en 2.0. Pour le nom de domaine réel, j'utilisehostname --fqdn | cut -d. -f2-4
Magellan
1
Cela fonctionne bien sous Linux. Sur Solaris au moins jusqu'à 10, hostname --fqdndéfinissez le nom d'hôte sur '--fqdn', ce qui est probablement une mauvaise idée (alors assurez-vous que vous n'êtes pas root si vous l'essayez). :) Est --fqdnpris en charge sur Solaris 11?
Alexios
1
Oh! Par inadvertance, la définition du nom d'hôte serait pénible, et l'OP a dit Solaris. Merci!
Synopsis / usr / sbin / check-hostname Description Le script check-hostname est une aide à la migration pour sendmail (1M). Ce script tente de déterminer le nom d'hôte qualifié complet de l'hôte local (FQHN) d'une manière similaire à sendmail (1M). Si check-hostname est capable de déterminer le FQHN de l'hôte local, il signale le succès. Sinon, check-hostname indique comment reconfigurer le système afin que le FQHN puisse être correctement déterminé.
ealgumby
/ usr / sbin / check-hostname signalera le nom de domaine complet, s'il est défini, sur les systèmes Solaris. Le fait de canaliser la sortie vers awk et d'utiliser print $ NF rapporte simplement le dernier champ de sortie de check-hostname, qui est le FQDN. Il s'agit de la méthode la plus directe à ma connaissance pour obtenir ces informations à partir de la ligne de commande, en supposant que vous disposez d'un nom de domaine complet. Sinon, cela ne fonctionnera pas, mais je n'ai pas ressenti le besoin de montrer que, comme dans ce cas, le nom d'hôte est tout ce que vous avez. Si vous n'utilisez pas Solaris, cela ne fonctionnera pas non plus, mais la requête a été dirigée pour Solaris.
ealgumby
Sérieusement, je ne comprends pas comment cela ne répond pas à la question qui était: "Dans unix (Solaris), y a-t-il une commande qui renvoie le nom d'hôte et le nom de domaine ensemble?" La réponse est "oui" et la commande est: check-hostname | awk '{print $ NF}'
ealgumby
3
La vraie réponse est dans vos commentaires. Donner une commande sur une ligne avec peu (ou dans votre cas, aucune) d'explication n'est pas le genre de réponse sur ce site.
rahmu
2
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.
sur mon ubuntu, hostname -iimprimez l'adresse IP correspondant au nom d'hôte.
Archemar
Oui c'est vrai, donc je passe cette adresse IP à la host commande. Cela vous donnera quelque chose comme ceci: YOUR_IP.in-addr.arpa domain name pointer hostname.domainname. avec awk j'obtiens la dernière colonne qui esthostname.domainname
user1314742
Je vois, en utilisant malheureusement host $(hostname -i)me donner une liste de 8 noms d'hôte, tous avec la même IP, et aucun nom d'hôte correspondant à mes hôtes
Archemar
êtes-vous sûr de ne pas avoir d'alias pour la hostcommande? il semble que votre commande hostait un alias pourhost -a
user1314742
0
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 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
printf "%s" "$(hostname) $(domainname)"
ne marche pas?Réponses:
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.
la source
La commande
pourrait également faire ce que vous voulez ou non, car sur mon système, je reçois
(none)
quand je coursdomainname
la source
hostname(1)
Solaris 10 (sur sun4v) et toutes les anciennes versions que j'ai utilisées, elles--fqdn
ne sont pas disponibles. Il essaie simplement de définir le nom d'hôte sur--fqdn
. Si vous l'exécutez en tant que non-superutilisateur pour des raisons de sécurité, il indique «uname: erreur dans le nom du paramètre: Pas propriétaire». C'est évidemment le stock Solarishostname
. L'affiche n'indique pas si le jeu d'outils GNU est installé ou non.Celui-ci me dérange aussi depuis des années. Je travaille juste en disant
Vous pouvez définir une fonction shell ou un alias:
la source
domainnname
signale en fait votre domaine NIS si vous exécutez NIS. Ce n'est pas nécessairement le même que votre nom de domaine DNS.hostname --fqdn | cut -d. -f2-4
hostname --fqdn
définissez le nom d'hôte sur '--fqdn', ce qui est probablement une mauvaise idée (alors assurez-vous que vous n'êtes pas root si vous l'essayez). :) Est--fqdn
pris en charge sur Solaris 11?check-hostname | awk '{print $ NF}'
la source
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.
la source
J'ai fait une petite solution de contournement pour
hostname
ethost
:(J'utilise Centos mais cela devrait fonctionner ailleurs)
Obtenir le domaine sans point de fuite:
la source
hostname -i
imprimez l'adresse IP correspondant au nom d'hôte.host
commande. Cela vous donnera quelque chose comme ceci:YOUR_IP.in-addr.arpa domain name pointer hostname.domainname.
avec awk j'obtiens la dernière colonne qui esthostname.domainname
host $(hostname -i)
me donner une liste de 8 noms d'hôte, tous avec la même IP, et aucun nom d'hôte correspondant à mes hôteshost
commande? il semble que votre commandehost
ait un alias pourhost -a
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
ou
exemple:
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
la source
Dans un script bash Unix, dans Sun Solaris 10, je viens d'afficher mon nom d'hôte par:
echo "Mon nom d'hôte est $ (nom d'hôte)"
la source