การแก้ปัญหาที่ให้มาส่วนใหญ่ทำงานในกรณีที่ง่ายกว่า: ชื่อโฮสต์แก้ไขโดยตรงไปยังที่อยู่ IPv4 เดียว นี่อาจเป็นกรณีเดียวที่คุณต้องแก้ไขชื่อโฮสต์ แต่ถ้าไม่ด้านล่างเป็นการสนทนาในบางกรณีที่คุณอาจต้องจัดการ
Chris Down และ Heinzi พูดคุยสั้น ๆ เกี่ยวกับกรณีที่ชื่อโฮสต์แก้ไขเป็นมากกว่าหนึ่งที่อยู่ IP ในกรณีนี้ (และอื่น ๆ ด้านล่าง) การสร้างสคริปต์พื้นฐานภายใต้ข้อสันนิษฐานว่าชื่อโฮสต์สามารถแก้ไขเป็นที่อยู่ IP เดียวได้โดยตรง ด้านล่างตัวอย่างที่มีชื่อโฮสต์จะแปลงเป็นมากกว่าหนึ่งที่อยู่ IP:
$ host www.l.google.com
www.l.google.com has address 209.85.148.147
www.l.google.com has address 209.85.148.103
www.l.google.com has address 209.85.148.99
www.l.google.com has address 209.85.148.106
www.l.google.com has address 209.85.148.105
www.l.google.com has address 209.85.148.104
แต่สิ่งที่เป็นwww.l.google.com
? นี่คือที่จะต้องมีการแนะนำกรณีนามแฝง ตรวจสอบตัวอย่างด้านล่าง:
$ host www.google.com
www.google.com is an alias for www.l.google.com.
www.l.google.com has address 74.125.39.103
www.l.google.com has address 74.125.39.147
www.l.google.com has address 74.125.39.105
www.l.google.com has address 74.125.39.99
www.l.google.com has address 74.125.39.106
www.l.google.com has address 74.125.39.104
ดังนั้นwww.google.com
ไม่ได้แก้ไขโดยตรงไปยังที่อยู่ IP แต่เป็นนามแฝงที่แก้ไขไปยังที่อยู่ IP หลายแห่ง สำหรับข้อมูลเพิ่มเติมเกี่ยวนามแฝงตรวจสอบที่นี่ แน่นอนกรณีที่นามแฝงมีที่อยู่ IP เดียวที่เป็นไปได้ดังที่แสดงด้านล่าง:
$ host g.www.ms.akadns.net
g.www.ms.akadns.net is an alias for lb1.www.ms.akadns.net.
lb1.www.ms.akadns.net has address 207.46.19.190
แต่นามแฝงจะถูกล่ามโซ่? คำตอบคือใช่:
$ host www.microsoft.com
www.microsoft.com is an alias for toggle.www.ms.akadns.net.
toggle.www.ms.akadns.net is an alias for g.www.ms.akadns.net.
g.www.ms.akadns.net is an alias for lb1.www.ms.akadns.net.
lb1.www.ms.akadns.net has address 207.46.19.254
$ host www.google.fr
www.google.fr is an alias for www.google.com.
www.google.com is an alias for www.l.google.com.
www.l.google.com has address 74.125.39.147
www.l.google.com has address 74.125.39.103
www.l.google.com has address 74.125.39.99
www.l.google.com has address 74.125.39.106
www.l.google.com has address 74.125.39.104
www.l.google.com has address 74.125.39.105
ฉันไม่พบตัวอย่างใด ๆ ที่ชื่อโฮสต์แก้ไขเป็นนามแฝงที่ไม่ได้แก้ไขที่อยู่ IP แต่ฉันคิดว่ากรณีอาจเกิดขึ้น
มากกว่าหลายที่อยู่ IP และชื่อแทนมีบางกรณีพิเศษอื่น ๆ ... แล้ว IPv6 ล่ะ? คุณสามารถลอง:
$ host ipv6.google.com
ipv6.google.com is an alias for ipv6.l.google.com.
ipv6.l.google.com has IPv6 address 2a00:1450:8007::68
ที่ชื่อโฮสต์ipv6.google.com
เป็นชื่อโฮสต์IPv6 เท่านั้น ชื่อโฮสต์แบบสแต็กคู่:
$ host www.facebook.com
www.facebook.com has address 66.220.153.15
www.facebook.com has IPv6 address 2620:0:1c08:4000:face:b00c::
เกี่ยวกับ IPv6 อีกครั้งหากโฮสต์ของคุณเป็น IPv4 เท่านั้นคุณยังคงสามารถแก้ไขที่อยู่ IPv6 ได้ (ทดสอบบน WinXP IPv4 เท่านั้นและกับ ipv6.google.com คุณสามารถลองใช้งานบน Linux ได้) ในกรณีนี้ความละเอียดประสบความสำเร็จ แต่ ping ล้มเหลวด้วยข้อผิดพลาดที่ไม่รู้จักโฮสต์ นี่อาจเป็นกรณีที่การเขียนสคริปต์ของคุณล้มเหลว
ฉันหวังว่าคำพูดเหล่านั้นมีประโยชน์
getent <ahosts|ahostsv4|ahostsv6|hosts> <hostname>
คำตอบอยู่ตรงนั้นใกล้ด้านล่าง มันเป็นวิธีที่ง่ายที่สุดไม่ต้องใช้แพคเกจเพิ่มเติมและง่ายต่อการแยกวิเคราะห์จากสคริปต์ Bash