क्या VPN ने आपके Mac का नाम बदल दिया? तीन होस्टनेम मानों की तुलना करें
Terminal का बदला हुआ प्रॉम्प्ट नाम बदलना नहीं है। ComputerName, LocalHostName और HostName अलग-अलग मान रखते हैं, और उनमें से एक अक्सर बस सेट ही नहीं होता।
जो प्रॉम्प्ट पहले एक बात दिखाता था वह अब कुछ और दिखाता है, और जो कनेक्शन बदला वह VPN था। Mac का नाम बदला गया है, यह निष्कर्ष निकालने से पहले ज़्यादातर लोगों के पास यही पूरा सबूत होता है, और यह काफ़ी नहीं है। macOS कम से कम तीन अलग नाम-मान रखता है, हर एक का काम अलग है, और शेल प्रॉम्प्ट उनमें से अधिकतम एक को ऐसे दिखाता है जिसे आसानी से गलत पढ़ा जा सकता है।
उनकी तुलना में तीन कमांड लगते हैं और किसी के कुछ संपादित करने से पहले सवाल तय हो जाता है।
तीन मान, तीन काम
तीनों ऐसे स्ट्रिंग हैं जिन्हें सिस्टम ख़ुशी से बताएगा, और ललक यह है कि जो पहला मिले उसे ही आधिकारिक मान लिया जाए। इसी तरह उपयोगकर्ता ग़लत फ़ील्ड को «ठीक» कर देता है और लक्षण को बना रहते देखता है।
| Value | What it is responsible for |
|---|---|
ComputerName | The friendly name a person sees in About and on the network browser; this is the one users mean by "my Mac's name" |
LocalHostName | The Bonjour name used on the local link, usually shown with a .local suffix in Sharing |
HostName | An explicitly configured host name that may simply not be set at all |
तीसरी पंक्ति वहीं है जहाँ सबसे ज़्यादा भ्रम शुरू होता है। सेट न किया गया HostName सामान्य स्थिति है, ख़राबी नहीं, और इसका अर्थ है कि सिस्टम होस्ट नाम की ज़रूरत पड़ने पर दूसरे स्रोतों पर लौट जाता है। उस खालीपन को क्षति के रूप में पढ़ना ऐसे सुधार की ओर ले जाता है जिसकी कभी ज़रूरत ही नहीं थी। यह असली सवाल भी छिपाता है, जो यह नहीं है कि मशीन का नाम क्या है, बल्कि यह है कि कोई ख़ास खोज या प्रॉम्प्ट उस पल कौन-सा नाम इस्तेमाल कर रहा है। उसका जवाब दें, और खाली मान दोष जैसा लगना बंद कर देता है।
लिखने से पहले पढ़ें
ये तीन कमांड सिर्फ़ मान बताते हैं। ये कुछ नहीं बदलते, इसलिए जाँच के दौरान इन्हें चलाना सुरक्षित है।
scutil --get ComputerName
scutil --get LocalHostName
scutil --get HostName
मंज़ूर VPN कनेक्शन से पहले और बाद में इन्हें उसी स्थानीय सत्र में चलाएँ, और नोट करें कि कौन-सा मान वास्तव में अलग है। अगर कुछ भी अलग न हो और प्रॉम्प्ट फिर भी ग़लत लगे, तो नाम कभी समस्या नहीं था: शेल कॉन्फ़िगरेशन या दूर के सत्र में कुछ अलग स्ट्रिंग दिखा रहा है।
कंप्यूटर नामों और स्थानीय होस्टनेम के बारे में Apple की मार्गदर्शिका मैत्रीपूर्ण नाम को General और About के अंतर्गत रखती है, और स्थानीय नाम को General और Sharing के अंतर्गत। यह उस स्वचालित प्रत्यय का भी दस्तावेज़ीकरण करती है जो तब जोड़ा जाता है जब उसी लिंक पर कोई दूसरा Mac पहले से नाम इस्तेमाल कर रहा हो, जो किसी अप्रत्याशित संख्या को छेड़छाड़ का सबूत मानने से पहले जानना उचित है।
शेल प्रॉम्प्ट वास्तव में क्या साबित करता है
प्रॉम्प्ट एक स्ट्रिंग है जिसे शेल बनाता है, और उसका होस्टनेम तत्व विस्तारित होस्ट नाम, उसके छोटे रूप, या प्रोफ़ाइल फ़ाइल में हार्डकोड किए गए मान से आ सकता है। यह किसी पूरी तरह अलग मशीन पर चल रहे SSH सत्र का भी हो सकता है, जो सबसे कम चमकदार व्याख्या है और VPN जोड़ते ही बदल गए प्रॉम्प्ट के लिए कहीं अधिक सामान्य है।
यह जाँचने से पहले कि आपको क्या कहा जाता है, यह जाँचें कि आप कहाँ हैं। hostname चलाएँ और उसकी तुलना तीन संग्रहीत मानों से करें, फिर शेल की प्रॉम्प्ट सेटिंग देखें कि वह होस्ट दिखाती है या नहीं। अगर प्रॉम्प्ट में कोई शाब्दिक स्ट्रिंग है जिसे किसी ने वर्षों पहले कॉन्फ़िगरेशन फ़ाइल में लिखा था, तो कोई भी सिस्टम बदलाव उसे कभी मेल नहीं करा पाएगा।
तुलना रिपोर्टिंग के लिए भी मायने रखती है। अलग दिखने वाला प्रॉम्प्ट और वास्तव में बदला हुआ संग्रहीत ComputerName दो अलग मालिकों वाली दो खोजें हैं, और उन्हें एक वाक्य में मिला देने से अगला इंजीनियर ग़लत जगह पहुँच जाता है।
VPN नामकरण को कहाँ वैध रूप से छू सकता है
VPN बदलता है कि कौन-से रिज़ॉल्वर और खोज डोमेन प्रासंगिक हैं, और अगर क्लाइंट एक स्वीकार करने के लिए कॉन्फ़िगर है तो यह DHCP के ज़रिए क्लाइंट को होस्ट नाम दे सकता है। यह वास्तविक तंत्र है, और «VPN ने मेरे Mac का नाम बदल दिया» से यह संकरा भी है। रिज़ॉल्वर का यह बदलना कि किसी दिए गए पते के लिए कौन-सा नाम हल होता है, संग्रहीत स्थानीय मानों को फिर से नहीं लिखता।
इसलिए दो सवाल अलग करें। क्या मशीन की अपनी पहचान अलग है, या जो नाम वह किसी और चीज़ तक पहुँचने के लिए इस्तेमाल करती है वह अलग है? पहले का जवाब तीन संग्रहीत मान देते हैं; दूसरे का जवाब DNS खोजें और इस्तेमाल हो रही कनेक्शन प्रोफ़ाइल देती हैं। उन्हें एक ही सवाल मानने से नाम-समाधान की समस्या के जवाब में पहचान सेटिंग्स बदल दी जाती हैं।
अगर सचमुच स्थायी होस्टनेम ज़रूरी हो
मान सेट करना जानबूझकर किया गया प्रशासनिक कार्य है, सजावटी पसंद नहीं, और मान उसी से आना चाहिए जिसके पास मशीन की नामकरण नीति है। प्रॉम्प्ट को जाना-पहचाना दिखाने के लिए प्रबंधित नाम को लिखकर मिटाना प्रमाणपत्र जाँच, निगरानी और होस्ट की पहचान करने वाली हर चीज़ को तोड़ सकता है।
जहाँ बदलाव वास्तव में ज़रूरी है, वही उपकरण जिसने मान पढ़े थे उन्हें लिखता है, और HostName पूरी तरह योग्य नाम स्वीकार करता है जबकि बाकी दो स्थानीय रूपों की अपेक्षा करते हैं। लिख लें कि आपने क्या बदला और क्यों, क्योंकि यह ठीक वैसा ही संपादन है जो मशीन की ओर देखने वाले अगले व्यक्ति को चौंका देता है।
ज़्यादातर रिपोर्टों के लिए सही जवाब सवाल के सुझाव से छोटा होता है: तीनों मान पढ़ें, पहचानें कि कौन-सा अलग है, और सिर्फ़ उसी को ठीक करें। प्रॉम्प्ट किसी चीज़ का लक्षण था, और तीन कमांड बताते हैं किस चीज़ का।