87 votes

Comment puis-je afficher les serveurs DNS actuels à partir de la ligne de commande sous OS X ?

Je veux afficher les serveurs DNS utilisés par la configuration actuelle du réseau sous OS X, à partir de la ligne de commande.

0 votes

127voto

kenneedham Points 92

Il y a plusieurs façons de procéder - en voici deux :

cat /etc/resolv.conf

-ou-

scutil --dns

1 votes

C'est extrêmement ennuyeux que networksetup -getdnsservers ne fonctionne pas pour les serveurs DNS attribués par DHCP. J'oublie toujours scutil . Le "sc" signifie "System Configuration" ? Il ne configure pas beaucoup le système...

6 votes

Il est également bon de noter que dig ou nslookup ne donnent pas nécessairement une image réaliste de la façon dont les applications MacOS résolvent les noms de domaine à partir du système local, en particulier lorsque plusieurs DNS (spécifiques à un domaine) ont été configurés, comme lors de l'utilisation d'un client VPN pour plusieurs connexions simultanées. Au lieu de nslookup ou dig utiliser dscacheutil -q host -a name somehostname.com pour tester la résolution DNS. Il prend en compte tous les serveurs DNS configurés ainsi que leur ordre de priorité.

7 votes

cat /etc/resolv.conf ne semble plus être une solution "fiable". Voici l'avis que j'obtiens dans MacOS High Sierra lorsque je l'utilise : (désolé pour le formatage - les commentaires ne supportent pas les sauts de ligne simples) # Avis MacOS # # Ce fichier n'est pas consulté pour la résolution des noms d'hôtes DNS, la résolution des adresses, ou le mécanisme de routage des requêtes DNS utilisé par la plupart des # processus sur ce système. # # Pour afficher la configuration DNS utilisée par ce système, utilisez : # scutil --dns

6voto

kenorb Points 11627

La commande shell suivante peut être utile pour répertorier les entrées DNS actuelles :

grep nameserver <(scutil --dns)

Pour filtrer la sortie du script, vous pouvez la faire passer par le canal suivant awk '{print $3}' o grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" commandement.

10 votes

C'est la même chose que scutil --dns | grep nameserver correct (juste une syntaxe différente) ?

1 votes

@SamAndrew81 correct pareil

0voto

estani Points 141

Pour obtenir tout dans une ligne séparée par une virgule :

scutil --dns | sed -n '/nameserver/ { s/^.* : \(.*\)/\1/p; }' | sort -u | paste -s -d',' -

0 votes

Grep est beaucoup plus simple ; pourquoi utiliser la complexe regexp ?

0 votes

Quelle regex complexe ? Je ne pense pas que les points et les débuts soient une regex complexe... dans tous les cas, cela renvoie les IPs séparées par des virgules, grep ne peut pas extraire ces valeurs, il ne fait que sélectionner les lignes. Ou est-ce que quelque chose m'échappe ?

0 votes

Toute regex incluant \ est complexe pour moi et je soupçonne la plupart des programmeurs. En tout cas, dans ce cas, elle est plus complexe que grep. L'OP veut seulement afficher les IPs, alors pourquoi faire plus complexe ?

-1voto

Tony Points 101

Voici ce que j'obtiens sur mon système pour la première commande de la réponse acceptée. Je pense que c'est ce que @PatrikN affichait dans son commentaire. Vous devez donc préférer la deuxième commande de la réponse acceptée. scutil --dns

11:40:03 ~ $ cat /etc/resolv.conf
#
# macOS Notice
#
# This file is not consulted for DNS hostname resolution, address
# resolution, or the DNS query routing mechanism used by most
# processes on this system.
#
# To view the DNS configuration used by this system, use:
#   scutil --dns
#
# SEE ALSO
#   dns-sd(1), scutil(8)
#
# This file is automatically generated.
#
...actual settings redacted...

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