Bagaimana saya bisa menampilkan server DNS saat ini dari baris perintah di bawah OS X?

50

Saya ingin menampilkan server DNS yang digunakan oleh pengaturan jaringan saat ini di OS X, dari baris perintah.

Sorin
sumber

Jawaban:

72

Ada beberapa cara - ini ada dua:

cat /etc/resolv.conf

-atau-

scutil --dns
Scot
sumber
1
Sangat menjengkelkan karena networksetup -getdnsserverstidak berfungsi untuk server DNS yang ditetapkan DHCP. Saya selalu lupa scutil. 'Sc' adalah singkatan dari System Configuration? Ini tentu tidak mengkonfigurasi banyak sistem ...
Geoff Nixon
1
Juga baik untuk dicatat bahwa digatau nslookuptidak perlu memberikan gambaran realistis tentang bagaimana aplikasi macOS menyelesaikan nama domain dari sistem lokal, terutama ketika beberapa DNS (khusus domain) telah dikonfigurasi, seperti ketika menggunakan klien VPN untuk banyak koneksi bersamaan. Alih-alih nslookupatau dig, gunakan dscacheutil -q host -a name somehostname.comuntuk menguji resolusi DNS. Ini memperhitungkan semua server DNS yang dikonfigurasi serta urutan prioritasnya.
Ville
3
cat /etc/resolv.conftidak tampak seperti solusi yang "dapat diandalkan" lagi. Ini adalah pemberitahuan yang saya dapatkan di macOS High Sierra ketika menggunakannya: (maaf untuk pemformatan - komentar tidak mendukung jeda baris sederhana) # macOS Pemberitahuan # # File ini tidak dikonsultasikan untuk resolusi nama host DNS, alamat # resolusi, atau Mekanisme perutean DNS query digunakan oleh sebagian besar proses # pada sistem ini. # # Untuk melihat konfigurasi DNS yang digunakan oleh sistem ini, gunakan: # scutil --dns
PatrikN
Saya suka scutil --dns | grep nameserveruntuk hanya mendapatkan server DNS.
SamAndrew81
2

Perintah shell berikut dapat bermanfaat untuk mendaftar entri DNS saat ini:

grep nameserver <(scutil --dns)

Untuk memfilter skrip, Anda dapat menyalurkan output ke awk '{print $3}'atau grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+"perintah.

kenorb
sumber
2
Ini sama dengan scutil --dns | grep nameserverbenar (hanya sintaks yang berbeda)?
SamAndrew81