मैक ओएस एक्स "मेजबान" फ़ाइल, क्या मैं इसके साथ अन्य फाइलें शामिल कर सकता हूं?


10

मैं अपने नेटवर्क सेटिंग्स को कॉन्फ़िगर करने के लिए कुछ स्वचालन लिपियों पर काम कर रहा हूं, फ़ाइल सामग्री और / / / रिज़ॉल्वर फ़ाइलों को होस्ट करता हूं, जब मैं विभिन्न नेटवर्क तक पहुंचता हूं, जिनके बीच मैं अक्सर होता हूं।

कुछ संयोजन हैं जो हो सकते हैं कि सभी को होस्ट फ़ाइल में परिवर्तन की आवश्यकता होती है, और मैं विभिन्न संयोजनों के मैट्रिक्स को सेट करने से बचना चाहूंगा, सभी जगह साझा सेटिंग्स को दोहराता हूं।

उदाहरण के लिए, मैं कार्य नेटवर्क पर हो सकता हूं , अर्थात। भवन में, या मैं इसे वीपीएन पर एक्सेस कर सकता हूं। दोनों ही मामलों में, मुझे ठीक से काम करने के लिए नेटवर्किंग के लिए मेजबानों फ़ाइल में कुछ सेटिंग्स जोड़ने की आवश्यकता है, कुछ साझा किए गए हैं, कुछ नहीं हैं। इसके अतिरिक्त, अगर मैं वीपीएन से अधिक हूं, तो मैं घर पर हो सकता हूं, इस मामले में मेजबानों की फाइल में कुछ अन्य सेटिंग्स हैं जिन्हें मैं भी जोड़ना चाहता हूं ।

जैसे, मैं उम्मीद कर रहा था कि "घर के लिए एक फ़ाइल बनाने के बजाय, वीपीएन पर काम करना" बनाम "घर, काम नहीं करना", आदि, क्या मेरे लिए अन्य फ़ाइलों को शामिल करने का एक तरीका है?

उदाहरण के लिए, मान लें कि निम्नलिखित काल्पनिक वाक्य रचनाएँ काम करती हैं:

#!include home.hosts
#!include work.hosts

127.0.0.1 localhost
::1 localhost

इस तरह, मैं केवल उन दो अतिरिक्त फ़ाइलों में से एक, या दोनों की सामग्री को साफ कर सकता हूं और बाकी को छोड़ सकता हूं।

या, यह रोकते हुए, क्या यह एक छोटी स्क्रिप्ट बनाने की तुलना में ऐसा करने का एक बेहतर तरीका है जो फ़ाइलों को एक नई मेजबानों की फ़ाइल में रख देता है, और मेरे स्वचालन सेटअप के हिस्से के रूप में, मैं पहली बार उन अतिरिक्त फ़ाइलों में से कुछ को साफ करता हूं, और फिर मैं उन अतिरिक्त फ़ाइलों से एकल होस्ट फ़ाइल के पुनर्निर्माण के लिए स्क्रिप्ट का आह्वान करता हूं?


क्या आप सुनिश्चित हैं कि मेजबान होस्ट में बदलाव की आवश्यकता है जैसे कि dsclसीधे मेजबान प्रविष्टियों को संशोधित करना ?
डैनियल बेक

मुझे dsclकमांड के बारे में पता नहीं था , मुझे उस पर भी शोध करना होगा।
लास वी। कार्लसन

जैसे देखें यहाँ । आंतरिक रूप से, ओएस एक्स अपनी निर्देशिका सेवाओं, जो आप का उपयोग कर नियंत्रित कर सकते हैं का उपयोग करता dsclहै, जिसके लिए /etc/hosts, बस उपलब्ध डेटा स्रोतों में से एक है होस्टनाम / आईपी पते मैपिंग (बेशक) प्रदान करते हैं। एक स्क्रिप्ट सेट करना dsclजो कैश को लिखता है और फ्लश करता है, आपकी स्थिति में मेजबानों की कई प्रतियों को रखने या हर समय इसे फिर से लिखने की तुलना में बेहतर काम कर सकता है।
डैनियल बेक

@DanielBeck: अच्छी बात है! मुझे dscl की सभी क्षमताओं के बारे में पता नहीं था।
करोलोस

मुझे पता है कि यह कैसे काम करता है, अगर आप इसे इस तरह से करने की कोशिश करना चाहते हैं। मैंने स्वयं इसकी कोशिश नहीं की, इसलिए मैं इसे उत्तर के रूप में पोस्ट नहीं करता। सौभाग्य!
डैनियल बेक

जवाबों:


7

मैं किसी भी शामिल संभावना से अवगत नहीं हूं। हालाँकि, मैं अपनी मेजबानों की फ़ाइल में सेक्शन बनाना चाहता हूँ, और फिर स्क्रिप्ट का उपयोग करके प्रत्येक सेक्शन में लाइनों को कमेंट करता हूँ, जैसे, sed।

इस तरह आपकी फ़ाइल दिखेगी

#%%%HOME.HOSTS%%%
#Put here the contents of home.hosts
#%%%WORK.HOSTS%%%
#Put here the contents of work.hosts

#%%%ALWAYS_ON%%%
127.0.0.1 localhost
::1 localhost

संपादित करें: खेतों को संशोधित करने के लिए एक त्वरित प्रयास में जोड़ना।

HOME.HOSTS के लिए टिप्पणी निकालना

 sed -i '/#%%%HOME.HOSTS/,/#%%%/s/^#\([^%]\)/\1/g' hosts

HOME.HOSTS के लिए टिप्पणियों को वापस लाना

 sed -i '/#%%%HOME.HOSTS/,/#%%%/s/^\([^#]\)/#\1/g' hosts

यह एक मूल संस्करण है, और इसे अपनी आवश्यकताओं के साथ समायोजित करने की आवश्यकता है।


हैलो करोलोस, क्या आप कमांड के बारे में अधिक वर्णन कर सकते हैं: sed -i '/#%%%HOME.HOSTS/,/#%%%/s/^#\([^%]\)/\1/g' hostsऔर मेजबानों की फाइल में अनुभाग के बारे में। मुझे वास्तव में समझ में नहीं आ रहा है कि क्यों :(
तान

@NNToan: लाइन को sedदो #%% लाइनों के बीच में लाइनों की शुरुआत में एक # जोड़ने या हटाने के लिए कहा जाता है। यह लाइनों को कमेंट या अन-कमेंट करेगा। उदाहरण दिखाता है कि # %% HOME.HOSTS का उपयोग करके HOME.HOSTS अनुभाग पर टिप्पणी कैसे करें; आपको काम करने के लिए sedK.HOSTS अनुभाग पर टिप्पणी करने या टिप्पणी करने के लिए sed कमांड के बजाय # %%% WORK.HOSTS का उपयोग करना चाहिए।
करोलोस

0

चूंकि dscl अब OpenDirectoryService के स्विच के कारण काम नहीं कर रहा है, इसलिए एक विकल्प भूत का उपयोग करना है:

sudo gem install ghost

sudo ghost add fw.test.se 10.0.0.1

... इस अनुभाग को / etc / मेजबान में जोड़ेगा:

# ghost start
10.0.0.1 fw.start.se
# ghost end

होस्ट फ़ाइल उपयोग के #ghost अनुभाग को साफ़ करने के लिए (इससे मेजबानों की सूची को नए के साथ बदलना आसान हो जाता है):

sudo ghost empty

आप भूत के बारे में और जानकारी यहाँ प्राप्त कर सकते हैं: https://github.com/bjeanes/ghost


0

मेरे पास एक समान उपयोग का मामला था जब मुझे मेजबान फ़ाइल में विभिन्न लैन / वैन सेटिंग्स का उपयोग करके तीन अलग-अलग स्थानों पर सेवाओं तक पहुंचने की आवश्यकता थी। ऊपर करोलोस का उत्तर एक संभव समाधान है। मेरा दृष्टिकोण यहाँ है।

1- http://apple.stackexchange.com/q/139267/74657 पर देखें

2- प्रत्येक स्थान (hosts.work, hosts.home, hosts.vendor) के लिए होस्ट फ़ाइलें बनाई गईं

3- सॉलोज की स्क्रिप्ट का उपयोग करते हुए, यहां ( https://github.com/slozo/Network-listener ) जब भी मैं होम नेटवर्क से जुड़ता हूं, तो मैं होस्ट फाइल को स्विच करने के लिए सरल स्क्रिप्ट निष्पादित करता हूं।

सरलतम विधि होगी

mv hosts.home /etc/hosts

वैकल्पिक रूप से आप विशिष्ट SSID से जुड़ने पर बाहर निकलने वाली फ़ाइल को अपडेट करने के लिए sed का उपयोग करके ऊपर दिए गए Karolos के उत्तर को स्वचालित कर सकते हैं जिसे आप ऊपर उल्लिखित सोलोज़ की स्क्रिप्ट का उपयोग करके आसानी से पहचान सकते हैं और चला सकते हैं।

आशा है कि किसी को भी इस विषय पर ठोकर खाने में मदद करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.