नेटवर्क कनेक्शन पर OS X 10.6 में स्क्रिप्ट चलाएँ। (जैसे /etc/network/if-up.d/)


17

मैक ओएस एक्स में नेटवर्क इंटरफ़ेस आने पर स्क्रिप्ट चलाने का कोई तरीका है?

मैंने ip-up / etc / ppp नाम की स्क्रिप्ट डालने की कोशिश की है, लेकिन जब मैं डिस्कनेक्ट करता हूं और वायरलेस नेटवर्क से कनेक्ट करता हूं तो यह आग नहीं लगती।

मैं लगातार नेटवर्क की स्थिति बदल गया है या नहीं, यह जांचने के लिए क्रोन जॉब नहीं करना चाहता। कुछ लिनक्स डिस्ट्रोस में, आप /etc/network/if-up.d/ में स्क्रिप्ट डालकर इसे पूरा कर सकते हैं। क्या मैक ओएस एक्स के लिए भी कुछ ऐसा ही है?

जवाबों:


5

आप मार्कोपोलो या इसकी वेबसाइट पर सूचीबद्ध समान उपयोगिताओं में से एक का प्रयास कर सकते हैं । यदि आप एक न्यूनतावादी हैं तो स्थान परिवर्तक बड़ा प्रतीत होता है।


1
मैं अतिरिक्त कार्यक्रम स्थापित किए बिना ऐसा करना पसंद करूंगा। हालाँकि, स्थान परिवर्तक लिंक बहुत मददगार था क्योंकि इसमें नेटवर्क परिवर्तन पर प्रोग्राम चलाने के लिए एक लॉन्च विन्यास शामिल है।
Zxaos

1
Zxaos: यकीन है, यही कारण है कि मैं इसे शामिल किया। यह मूल रूप से एक लॉन्च / बैश स्क्रिप्ट टेम्पलेट है जो आप चाहते हैं। आपको बॉयलरप्लेट कोड लिखने से बचाता है।
डैनियल बेक

अगर मैं आपको इस बहुत ही प्रासंगिक q ( superuser.com/questions/265861 ) को देखने के लिए परेशान कर सकता हूं, तो मैं इसकी बहुत सराहना करूंगा (ओएसएक्स पर कमांड लाइन से वीपीएन कैसे शुरू करें और कैसे रोकें)। याचना का बहाना करते हुए, मैं इस टिप्पणी को कुछ ही घंटों में हटा दूँगा। किसी भी मामले में धन्यवाद!
दान रोसेनस्टार्क

1
@ यार कोई समस्या नहीं है, लेकिन यह मध्य यूरोप में अभी आधी रात है, इसलिए कृपया मुझे फिर से पिंग करने से पहले आधे दिन या तो प्रतीक्षा करें (और कृपया ऐसा करें अगर इस बीच कुछ भी नहीं आता है, तो यह एक दिलचस्प सवाल है)।
डैनियल बेक

धन्यवाद @ डैनियल बेक। जैसा कि आप शायद पहले से ही देख चुके हैं, एप्सस्क्रिप्ट का उपयोग करना उत्तर था। यह शायद OSX पर कई चीजों के लिए है, लेकिन मैं अक्सर इसे भूल जाता हूं।
दान रोसेनस्टार्क

19

एक लॉन्च एजेंट देख रहा है /etc/resolv.conf, और दो नेटवर्क से संबंधित .plist फाइलें /Library/Preferences/SystemConfiguration/मेरे लिए काम कर रहा है (मैक ओएस एक्स 10.8.4 में):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" \
 "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>ifup.ddns</string>

  <key>LowPriorityIO</key>
  <true/>

  <key>ProgramArguments</key>
  <array>
    <string>/Users/Shared/bin/ddns-update.sh</string>
  </array>

  <key>WatchPaths</key>
  <array>
    <string>/etc/resolv.conf</string>
    <string>/Library/Preferences/SystemConfiguration/NetworkInterfaces.plist</string>
    <string>/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist</string>
  </array>

  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>

मैंने पहले केवल /etc/resolv.conf का उपयोग किया था, लेकिन ऐसे मामले थे जहां यह पर्याप्त नहीं था।


यह मेरे लिए बहुत उपयोगी था, लेकिन इसमें एक त्रुटि है ([यह उत्तर] [1]): उद्घाटन <plist version="1.0">टैग गायब है। [१] [ apple.stackexchange.com/a/181127/56862]
लिबरल आर्टिस्ट

@patrix (और लिबरल आर्टिस्ट): सुधार के लिए धन्यवाद। मैंने गौर नहीं किया, क्योंकि यह मेरे लिए 10.8.5 में काम करता था। मुझे लगता है कि बाद के संस्करण अधिक सख्त हैं।
mivk

@mivk क्या वास्तव में इन SystemConfigurationफ़ाइलों में परिवर्तन माना जाता है ? अगर मैं एक नेटवर्क केबल को प्लग / अनप्लग करता हूं, तो कुछ भी नहीं लगता है
Ice23ire

यह करीब लगता है, लेकिन अगर मैं वाईफ़ाई को बंद कर देता हूं और वापस चालू करता हूं, तो प्रोग्राम केवल तभी चलता है जब नेटवर्क डिस्कनेक्ट हो जाता है, न कि जब यह फिर से जुड़ता है। मैं देख रहा हूं कि /etc/resolv.confजब मेरी वाईफाई स्थिति बदल जाती है, तो फ़ाइल हटा दी जाती है और पढ़ी जाती है, इसलिए मुझे यकीन नहीं है कि यह केवल डिस्कनेक्ट पर क्यों चल रहा है।
मैट हगिंस

5

आपको क्रैंकड का उपयोग करने पर विचार करना चाहिए , जो आपको कई सिस्टम ईवेंट जैसे नेटवर्क परिवर्तन, फाइलसिस्टम गतिविधि, एप्लिकेशन लॉन्चिंग, आदि के जवाब में स्क्रिप्ट चलाने की अनुमति देता है।

जैसा कि मुझे कोई समझदार दस्तावेज नहीं मिला, मैंने क्रैंकड का उपयोग शुरू करने पर एक छोटा ब्लॉग पोस्ट भी लिखा ।


आपका ब्लॉग अनाम पढ़ने से सुरक्षित है। कृपया यहां सामग्री की नकल करने पर विचार करें।
nfirvine

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

4

यह काम में लगता है:

(echo -e "n.add State:/Network/Global/IPv4\nn.watch" & cat) | \
 scutil | \
 awk '/notification/ {system("echo change")}'

echo changeअपने आदेश के साथ बदलें , यह ध्यान में रखते हुए कि यदि आपको अपने आदेश में कुछ भी उद्धृत करने की आवश्यकता है, तो आपको उपयोग करने की आवश्यकता होगी '\'':

(echo -e "n.add State:/Network/Global/IPv4\nn.watch" & cat) | \
 scutil | \
 awk '/notification/ {system("echo '\''&'\''")}'

3

ControlPlane: "संदर्भ संवेदनशील कम्प्यूटिंग"

ControlPlane MarcoPolo का एक सीधा पोर्ट है और वास्तव में, MarcoPolo का अधिकांश कॉन्फ़िगरेशन अभी भी ControlPlane के साथ काम करता है, बस बेहतर! ControlPlane 32 और 64 बिट इंटेल आधारित मैक का समर्थन करता है जो स्नो लेपर्ड और उच्चतर चलता है।

यहाँ छवि विवरण दर्ज करें यहाँ छवि विवरण दर्ज करें यहाँ छवि विवरण दर्ज करें


2

लॉन्च से शुरू करें। आप इसका उपयोग करके समान कार्यक्षमता के लिए सक्षम हो सकते हैं।

संपादित करें : 9 साल बाद, शायद नहीं। इस विकिपीडिया प्रविष्टि के अनुसार :

2014 में, OS X 10.10 और iOS 8 के साथ, Apple ने बंद स्रोत libxpc में लॉन्च के लिए कोड स्थानांतरित किया


लॉन्चड ऐसा लगता है कि यह सही दिशा में एक कदम है, खासकर अगर मैं यह पता लगा सकता हूं कि नेटवर्क परिवर्तनों का पता लगाने के लिए अन्य प्रोग्राम इसका उपयोग कैसे करते हैं।
Zxaos

@Zxaos, लॉन्चड सही दिशा में एक कदम की तरह लगता है , लेकिन इसे नेटवर्क परिवर्तनों का पता लगाने का कोई विश्वसनीय तरीका नहीं है। इसके बजाय क्रैंकड के उपयोग से समाधान के लिए मेरा उत्तर देखें ।
जुआन ए। नवारो

URL 404 पृष्ठ की ओर जाता है।
स्लावेन रेज़िक

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