ฉันจะแสดงเซิร์ฟเวอร์ DNS ปัจจุบันจากบรรทัดคำสั่งภายใต้ OS X ได้อย่างไร


50

ฉันต้องการแสดงเซิร์ฟเวอร์ DNS ที่ใช้โดยการตั้งค่าเครือข่ายปัจจุบันใน OS X จากบรรทัดคำสั่ง

คำตอบ:


72

มีหลายวิธี - ต่อไปนี้เป็นสองวิธี:

cat /etc/resolv.conf

-หรือ-

scutil --dns

1
มันน่ารำคาญอย่างยิ่งที่ใช้networksetup -getdnsserversไม่ได้กับเซิร์ฟเวอร์ DNS ที่กำหนด DHCP scutilฉันมักจะลืมเกี่ยวกับ 'sc' หมายถึงการกำหนดค่าระบบ? ไม่แน่ใจว่าจะกำหนดค่าระบบมาก ...
Geoff Nixon

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

คำสั่ง shell ต่อไปนี้มีประโยชน์ในการแสดงรายการ DNS ปัจจุบัน:

grep nameserver <(scutil --dns)

หากต้องการกรองออกสำหรับสคริปต์คุณสามารถไพพ์เอาต์พุตawk '{print $3}'หรือgrep -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+"คำสั่ง


2
สิ่งนี้เหมือนกับที่scutil --dns | grep nameserverถูกต้อง (มีเพียงไวยากรณ์ที่แตกต่างกัน)
SamAndrew81
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.