11 votes

Quelle est la méthode préférée de recherche de nom de domaine (DNS) en ligne de commande ?

Quelle commande de ligne de commande dois-je utiliser pour rechercher une adresse de domaine ?

En consultant les pages de manuel de nslookup et dig, je vois une section indiquant que ces utilitaires n'utilisent pas les méthodes de recherche de noms de Mac OS.

Alors, quelle commande dois-je lancer ?

25voto

Gordon Davisson Points 30215

nslookup , host et dig sont des outils de requête DNS parfaitement adaptés à OS X, mais ils interrogent tous directement le DNS plutôt que de passer par le système de résolution interne d'OS X. Par conséquent, ils ne vérifient pas le fichier /etc/hosts, ni ne résolvent les noms Bonjour/mDNS (ceux qui se terminent par .local). La manière standard (rapide et sale) de tester la résolution est d'utiliser la méthode suivante ping L'adresse que vous lui donnez sera résolue par le système habituel avant d'essayer de lui envoyer un ping. Si vous voulez quelque chose de prévu à cet effet, utilisez dscacheutil à la place :

$ dscacheutil -q host -a name www.apple.com
name: e3191.c.akamaiedge.net
alias: www.apple.com www.isg-apple.com.akadns.net www.apple.com.edgekey.net 
ip_address: 184.24.141.15

$ ping www.apple.com
PING e3191.c.akamaiedge.net (184.24.141.15): 56 data bytes
64 bytes from 184.24.141.15: icmp_seq=0 ttl=57 time=57.258 ms
^C
--- e3191.c.akamaiedge.net ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 57.258/57.258/57.258/0.000 ms

0 votes

Kudos. J'ai déposé un Radar indiquant que les pages de manuel devraient être plus claires à ce sujet : openradar.me/radar?id=5038477976535040

0 votes

Un problème avec l'utilisation de dscacheutil pour les recherches est que s'il ne peut pas résoudre un nom d'hôte, il ne se termine pas avec un code de retour non nul comme le fait host.

0 votes

Pour pallier le manque de codes de retour utiles, j'ai créé un shell très basique script pour compléter la commande standard 'host'. #!/usr/bin/env bash STAT=1 LOOKUPRESULT="$(dscacheutil -q host -a name "$1")" if [ -z "$LOOKUPRESULT" ] ; then exit "$STAT" else echo "$LOOKUPRESULT" STAT=0 exit "$STAT" fi

4voto

Gishu Points 59012

Les deux commandes fonctionnent bien. Ce n'est pas parce qu'elle n'utilise pas les méthodes d'OS X qu'elle ne fonctionne pas. Si vous voulez utiliser les "méthodes d'OS X", puis-je vous recommander Network Utility ?

enter image description here

Cela peut toujours appeler whois et juste l'afficher dans la fenêtre.

0 votes

Je suppose que ça ne marche pas pour .local des adresses, n'est-ce pas ?

0 votes

Non, cela ne fonctionnera pas pour les adresses .local. Il utilise un serveur whois public, et les adresses .local n'y seront pas affichées.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X