J'ai testé hostname
sur plusieurs serveurs (RedHat, Ubuntu), et hostname -f
s'est avéré peu fiable, renvoyant parfois le nom court uniquement (comme décrit dans cette question ).
Je peux voir le fqn dans les alias: hostname -a
(l'un des alias est le fqn que je recherche), mais l'ordre des alias n'est pas fixe.
Existe-t-il un autre moyen d'obtenir le nom complet de manière fiable et de le stocker dans une variable bash?
Réponses:
J'ai essayé ceci sur CentOS5:
host -TtA $SERVERNAME|grep "has address"|awk '{print $1}'
Je dois interroger mon DNS en mode TCP. Si UDP fonctionne dans votre environnement, laissez l'option "T".
Remarque: sur un invité Ubuntu (VirtualBox), cela ne fonctionnera pas:
Donc pour couvrir tous les cas:
la source
host -TtA $(hostname -s)|grep "has address"|awk '{print $1}'
travailler sur mes serveurs redhatVoici une façon dont j'ai trouvé le fqn:
En d'autres termes, je devais
nslookup
l'adresse IP, ce qui me donne quelque chose comme:À partir de là, il s'agissait simplement de supprimer ce que je ne voulais pas, grâce à des manipulations de chaînes bash .
Peut-être qu'il existe un moyen plus simple?
la source
Votre méthode ne fonctionne que si vous avez correctement configuré votre nom d'hôte et que vous avez les bons paramètres DNS, etc. Si vous avez tout cela, vous connaissez déjà votre nom de domaine complet.
Il n'y a aucun moyen fiable d'obtenir le fqdn. Une seule adresse IP peut avoir plusieurs fqdn, et un seul fqdn peut avoir plusieurs adresses IP ... et beaucoup d'IP n'ont pas de fqdn du tout.
Si votre machine est directement connectée à Internet, utilisez simplement l'adresse IP et faites une requête DNS inversée:
host 1.2.3.4
mais cela ne vous donne pas souvent la réponse souhaitée (essayez simplement avec google par exemple).
la source
host
pour obtenir uniquement l'enregistrement A (ou effectuez une recherche correspondante).Ça ne
hostname --fqdn
marche pas pour toi?la source
hostname --fqdn
renvoie le nom court, avec le fqdn défini comme l'un des alias de nom d'hôte.-f
et--fqdn
c'est la même chose.Dans Ubuntu, vous pouvez faire
hostname -A
la source
Pour une alternative multiplateforme, si cela ne vous dérange pas d'utiliser python (fonctionne au moins sur python 2.7 et python 3)
la source
Une méthode bash uniquement OS X, qui ne fonctionnera probablement pas avec d' autres versions * nix en raison des variations de la sortie de la commande:
Python est probablement votre meilleur pari pour une large compatibilité.
la source