साधारण hostname
कमांड मंगलाचरण के विपरीत , आह्वान hostname --fqdn
कुछ और चीजें करने का प्रयास करेगा, जिसके परिणामस्वरूप अक्सर कुछ DNS लुकअप हो जाएंगे।
उदाहरण के लिए निम्नलिखित (सफल) मंगलाचरण लें (यह एक Red Hat बॉक्स से है, लेकिन मुझे लगता है कि यह उबंटू के लिए समान होना चाहिए):
# 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 नाम और आईपी पते) के बीच अनुवाद करते हैं।
वास्तव में, रिज़ॉल्वर केवल DNS से अधिक (और केवल होस्टनाम और आईपी पते के बीच अनुवाद करने से अधिक) करता है; इसका व्यवहार फ़ाइल द्वारा भाग में कॉन्फ़िगर किया गया है /etc/nsswitch.conf
, और आमतौर पर यह इस क्रम में, आमतौर पर निम्नलिखित से परामर्श करेगा:
- 'होस्ट' (लिनक्स पर, साधन / आदि / होस्ट)
- (कभी-कभी) nscd (नाम-सेवा कैशिंग डेमॉन)
- 'DNS'
(ध्यान दें, आपके पास कैशिंग DNS सर्वर भी हो सकता है जैसे कि dnsmasqd --- उपरोक्त बिंदु के लिए, जो अभी भी 'dns' तंत्र के अंतर्गत है)।
यह इंगित करने योग्य है कि खुदाई , मेजबान और आदरणीय nslookup जैसे उपकरण इस आदेश का पालन नहीं करते हैं; वे स्पष्ट रूप से DNS क्वेरी उपकरण हैं। इसका मतलब यह है कि यदि आप उन पर भरोसा करते हैं (उदाहरण के लिए एक स्क्रिप्ट में) तो आप नियमित क्लाइंट प्रोग्राम (जो सिस्टम रिज़ॉल्वर का उपयोग करते हैं) की तुलना में एक अलग परिणाम प्राप्त कर सकते हैं। इस कारण से, स्क्रिप्ट में प्राप्त कार्यक्रम का उपयोग करें , खासकर यदि आपके पास एक कोचिंग घटक है जैसे कि nscd चल रहा है।
# getent hosts myserver.example.com
10.1.2.3 myserver.example.com
तो यहां मुख्य कुंजी यह है कि a) यदि आपके पास / etc / मेजबान अच्छी तरह से अपनी मशीन के लिए एक प्रविष्टि के साथ कॉन्फ़िगर किए गए हैं, और b) आपके /etc/nsswitch.conf का सामान्य कॉन्फ़िगरेशन है - hosts: files dns
उस क्रम में, तब भी c) यदि आपके पास अपने वातावरण में डीएनएस अच्छी तरह से कॉन्फ़िगर नहीं है, तो hostname --fqdn
काम करना चाहिए।
एक अच्छी तरह से कॉन्फ़िगर किए गए DNS में, आपसे एक 'रिवर्स' एड्रेस (एक "PTR रिकॉर्ड") होने की उम्मीद की जाएगी, जो आपके सर्वर का 'कैनोनिकल' नाम देता है, और उस नाम को भी देखा जाना चाहिए (ए) एक रिकॉर्ड "आईपीवी 4 के लिए)।
लघु संस्करण: जोड़ें --verbose
; यह आपको इंगित करेगा कि आपको क्या कमी है।
आशा है कि आपको यह समझने में मदद मिलेगी कि क्या चल रहा है।