Lors de la rédaction d'un script, je voulais faire référence à une machine par le nom de l'ordinateur que je l'ai donné (par exemple "selenium-rc"). Je ne pouvais pas ping-à-moi en utilisant "selenium-rc", j'ai donc essayé les commandes suivantes de voir si le nom a été reconnu.
> traceroute 192.168.235.41
traceroute to 192.168.235.41 (192.168.235.41), 64 Hops max, 52 byte packets
1 Selenium-rc (192.168.235.41) 0.545 ms 0.241 ms 0.124 ms
Ok, traceroute "trouvé" le nom. Comment? Suivant ...
> traceroute Selenium-rc
traceroute: unknown Host Selenium-rc
Hmm ... Le mécanisme de recherche ici doit être différent car l'hôte est inconnu. Je suppose que cela utilise un processus de résolution du nom du système, tandis que le premier exemple utilisait un processus spécifique à TracerOne. Correct?
Puis quand je suis revenu un peu plus tard ...
> traceroute 192.168.235.41
traceroute to 192.168.235.41 (192.168.235.41), 64 Hops max, 52 byte packets
1 minint-q4e8i52.mycorp.net (192.168.235.41) 0.509 ms 0.206 ms 0.136 ms
OK, résultat différent. Le nom "selenium-rc" n'a pas changé sur la machine elle-même, mais le processus de résolution du nom de TracerOne doit inclure une sorte de priorité et donne désormais un résultat probablement plus autoritaire attribué par un autre système/service sur le réseau. (Malheureusement, je suppose que c'est un nom dynamique que je ne contrôle pas et que cela ne serait donc pas utile dans un script.)
Quelqu'un peut-il expliquer les résultats?
Généralement, sous Linux et Unix, Traceroute et Ping utiliseraient tous les deux un appel à GetHostByName () pour rechercher le nom d'un système. GetHostByName () Utilise à son tour les fichiers de configuration du système pour déterminer la commande dans laquelle interroger les bases de données de nommage, c'est-à-dire:/etc/hosts et DNS.
Sous Linux, l'action par défaut est (ou peut-être être utilisée) pour interroger en premier DNS, puis/etc/hosts. Cela peut être modifié ou mis à jour en définissant l'ordre souhaité dans /etc/host.conf.
Pour rechercher/etc/hosts avant DNS, définissez l'ordre suivant dans /etc/host.conf:
order hosts,bind
À Solaris, le même ordre est contrôlé via le fichier /etc/nsswitch.conf, dans la saisie de la base de données des hôtes.
hôtes: fichiers DNS
Définit la commande de recherche pour regarder dans/etc/hosts avant de rechercher DNS.
Traceroute et Ping utiliseraient tous les deux ces méthodes pour rechercher toutes les bases de données de nommage configurées. Les commandes Host
et nslookup
_ Les commandes n'utilisent que DNS, elles ne dupliquent donc pas nécessairement les résultats apparemment incompatibles que vous voyez.
Solaris a un outil de recherche, getent
, qui peut être utilisé pour identifier les hôtes ou les adresses de la même manière que TRACEROUTE et Ping DO - en suivant l'ensemble configuré de bases de données de nommage à la recherche.
getent hosts <hostname>
les bases de données sont répertoriées pour les hôtes, dans /etc/nsswitch.conf.
Alors. Dans votre cas, pour obtenir des résultats cohérents, ajoutez les éléments suivants à/etc/hôtes
192.168.235.41 Selenium-rc
Et assurez-vous que /etc/host.conf a:
order hosts,bind
Ou assurez-vous que /etc/nsswitch.conf a:
hosts: files dns
Une fois que cela est fait, vous devriez voir des résultats plus cohérents avec Ping et Traceroute, ainsi que d'autres commandes, telles que SSH, Telnet, Curl, Wget, etc.