Как я могу отобразить текущие DNS-серверы из командной строки под OS X?

50

Я хочу отобразить DNS-серверы, которые используются текущими настройками сети в OS X, из командной строки.

Сорин
источник

Ответы:

72

Есть несколько способов - вот два:

cat /etc/resolv.conf

-или-

scutil --dns
п`одать
источник
1
Это чрезвычайно раздражает, что networksetup -getdnsserversне работает для DNS-серверов, назначенных DHCP. Я всегда забываю о scutil. «Sc» означает «Конфигурация системы»? Это точно не настраивает большую часть системы ...
Джефф Никсон
1
Также полезно отметить, что digили nslookupне обязательно давать реалистичную картину того, как приложения macOS разрешают доменные имена из локальной системы, особенно когда было настроено несколько (специфичных для домена) DNS, например, при использовании VPN-клиента для нескольких одновременные соединения. Вместо nslookupили digиспользуйте dscacheutil -q host -a name somehostname.comдля проверки разрешения DNS. Он учитывает все настроенные DNS-серверы, а также их приоритетный порядок.
Вилле
3
cat /etc/resolv.confбольше не похоже на «надежное» решение. Это уведомление, которое я получаю в macOS High Sierra при его использовании: (извините за форматирование - комментарии не поддерживают простые разрывы строк) # Уведомление macOS # # Этот файл не используется для разрешения имени хоста DNS, разрешения адреса # или Механизм маршрутизации DNS-запросов, используемый большинством процессов в этой системе. # # Для просмотра конфигурации DNS, используемой этой системой, используйте: # scutil --dns
PatrikN
Я хотел , scutil --dns | grep nameserverчтобы просто получить DNS - серверы.
SamAndrew81
2

Следующая команда оболочки может быть полезна для отображения текущих записей DNS:

grep nameserver <(scutil --dns)

Чтобы отфильтровать его для сценария, вы можете направить вывод в команду awk '{print $3}'или grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+".

kenorb
источник
2
Это так же, как scutil --dns | grep nameserverправильно (просто другой синтаксис)?
SamAndrew81