ไม่เหมือนกับการhostname
เรียกใช้คำสั่งแบบง่ายการเรียกใช้hostname --fqdn
จะพยายามทำบางสิ่งเพิ่มเติมซึ่งมักจะส่งผลให้การค้นหา DNS บางอย่าง
ยกตัวอย่างเช่นการเรียกใช้ (สำเร็จ) ดังต่อไปนี้ (นี่คือจากกล่อง Red Hat แต่ฉันคิดว่ามันควรจะเหมือนกันสำหรับ Ubuntu):
# hostname --fqdn --verbose
gethostname()=`myserver.example.com'
Resolving `myserver.example.com' ...
Result: h_name=`myserver.example.com'
Result: h_addr_list=`10.1.2.3'
myserver.example.com
หมายเหตุ--verbose
ตัวเลือกที่มีประโยชน์มาก
ในระยะสั้นสิ่งอื่น ๆ ที่เรียบง่ายhostname
อาจทำมากกว่าที่คุณคาดหวัง นี่เป็นอีกตัวอย่าง:
# hostname --ip --verbose
gethostname()=`myserver.example.com'
Resolving `myserver.example.com' ...
Result: h_name=`myserver.example.com'
Result: h_addr_list=`10.1.2.3'
10.1.2.3
และเพื่อปัดเศษ:
# hostname --verbose
gethostname()=`myserver.example.com'
myserver.example.com
โปรดทราบว่าชื่อโฮสต์ของระบบ (ตามที่ส่งคืนโดย gethostname) ฉันสามารถใช้ชื่อโฮสต์ที่ไม่มีเงื่อนไขเช่น 'myserver' นี่คือสาเหตุที่โปรแกรมที่คุณต้องการติดตั้งใช้งานhostname --fqdn
แทน
ข้อความแสดงข้อผิดพลาดhostname: Name or service not known
มาจากฟังก์ชั่นตัวแก้ไข : สิ่งเหล่านี้เป็นส่วนของไลบรารีระบบที่แปลระหว่างชื่อและที่อยู่ (โดยทั่วไปคือชื่อ DNS และที่อยู่ IP)
ที่จริงแล้วตัวแก้ไขทำมากกว่า DNS (และมากกว่าแค่การแปลระหว่างชื่อโฮสต์และที่อยู่ IP) พฤติกรรมของมันได้รับการกำหนดค่าบางส่วนโดยไฟล์/etc/nsswitch.conf
และโดยทั่วไปแล้วจะพิจารณาสิ่งต่อไปนี้ตามลำดับนี้:
- 'hosts' (บน Linux หมายถึง / etc / hosts)
- (บางครั้ง) nscd (daemon การแคชบริการชื่อ)
- 'DNS'
(โปรดทราบว่าคุณสามารถมีเซิร์ฟเวอร์แคช DNS เช่น dnsmasqd --- สำหรับจุดด้านบนซึ่งยังคงอยู่ภายใต้กลไก 'dns')
เป็นมูลค่าการชี้ให้เห็นว่าเครื่องมือเช่นขุด , เจ้าภาพและเป็นที่เคารพnslookupไม่ปฏิบัติตามคำสั่งนี้; เป็นเครื่องมือสืบค้น DNS อย่างชัดเจน ซึ่งหมายความว่าหากคุณพึ่งพาพวกเขา (ในสคริปต์) คุณอาจท้ายได้รับผลลัพธ์ที่แตกต่างจากสิ่งที่โปรแกรมไคลเอนต์ปกติจะ (ที่ใช้ตัวแก้ไขระบบ) ด้วยเหตุผลนี้ให้ใช้โปรแกรมgetentในสคริปต์โดยเฉพาะถ้าคุณมีส่วนประกอบแคชเช่นการเรียกใช้ nscd
# getent hosts myserver.example.com
10.1.2.3 myserver.example.com
ดังนั้นสิ่งที่สำคัญสำหรับที่นี่คือ a) หากคุณมี / etc / hosts กำหนดค่าอย่างดีกับรายการสำหรับเครื่องของคุณเองและ b) /etc/nsswitch.conf ของคุณมีการกำหนดค่าตามปกติ - hosts: files dns
ตามลำดับนั้น c) แม้ หากคุณไม่มี DNS ที่กำหนดค่าอย่างดีในสภาพแวดล้อมของคุณคุณhostname --fqdn
ควรใช้งานได้
ใน DNS ที่กำหนดค่าอย่างดีคุณจะต้องมีที่อยู่ 'reverse' หนึ่งรายการ ("PTR record") ที่ให้ชื่อ 'canonical' ของเซิร์ฟเวอร์ของคุณและชื่อนั้นควรจะสามารถค้นหาได้ (เช่น " บันทึก "สำหรับ IPv4)
เวอร์ชั่นสั้น: เพิ่ม--verbose
; มันจะชี้ให้คุณสิ่งที่คุณขาด
หวังว่าจะช่วยให้คุณเข้าใจสิ่งที่เกิดขึ้น