'sudo ifcong en0 down' - OS X में नीचे नहीं रहता है?


1

मेरा लक्ष्य en0 के माध्यम से सभी ईथरनेट ट्रैफ़िक को समाप्त करना है जब तक कि मैं इसे वापस नहीं लाता ifconfig en0 up

जब मैं ifconfig en0 downटर्मिनल के माध्यम से चलता हूं , और फिर पुष्टि करता हूं ifconfigऔर सभी इंटरफेस निष्क्रिय हैं।

हालांकि, अगले दिन, मुझे लगता है कि en0 स्वचालित रूप से बैकअप ले रहा है। मैं कैसे पता लगा सकता हूं कि इसे क्या लाया गया है, और क्या यह सुनिश्चित करने का एक बेहतर तरीका है कि यह नीचे रहता है?


जिज्ञासा से बाहर, sudo networksetup -setnetworkserviceenabled Ethernet offअलग व्यवहार करता है ?
MacManager

@MacManager को धन्यवाद, मैंने 'sudo networksetup -setnetworkserviceenabled Ethernet off' की कोशिश नहीं की थी। मैं आज रात करूंगा। मैं आशा करता हूँ यह काम करेगा!
हैरी पॉटर

@klanomath, हाँ, सभी निष्क्रिय हैं। यह अजीब है, क्योंकि आपको लगता है कि 'sudo ifconfig en0 down' नीचे रहेगा। मैं हमेशा ifconfig की जांच करता हूं और पुष्टि करता हूं कि यह निष्क्रिय हो गया है । लेकिन, मुझे लगता है कि अगली सुबह कुछ और लाया है।
हैरी पॉटर

ज़रूर। मैंने जिस नेटवर्क सेवा का उपयोग किया है उसका नाम पाने के networksetup -listnetworkserviceorderलिए और en0 प्रविष्टि की तलाश की।
MacManager

@HarryPotter मेरा मतलब था: यदि आप ifconfig के साथ सिर्फ en0 को निष्क्रिय करते हैं, तो en1 / en2 को नीचे / निष्क्रिय नहीं होना चाहिए यदि वे पहले सक्रिय हो चुके हैं।
कालोनोमथ

जवाबों:


1

इसके बजाय networksetup कमांड का उपयोग करें । मेरे सिस्टम en0पर वाई-फाई है, इसलिए मैं उपयोग करता हूं networksetup -setairportpower en0 off। मैं वास्तव में एक छोटे AppleScript का उपयोग करता हूं जो मेरे डॉक में बैठता है और राज्य को टॉगल करता है। देखें networksetup मैनुअल पृष्ठ में अतिरिक्त जानकारी के प्रयोग करने के लिए networksetup

ऐप्पलस्क्रिप्ट कोड को टॉगल वाई-फाई नामक एक एप्लिकेशन के रूप में सहेजें और फिर आप इसे आवश्यकतानुसार / वांछित चला सकते हैं। यदि आप इसे चलाते हैं और वाई-फाई चालू है, तो यह इसे बंद कर देता है, और यदि यह बंद है, तो यह इसे चालू करता है।

on run
    set interface to "en0"
    set status to do shell script "ifconfig " & interface & " | awk '/status:/{print $2}'"

    if status is "inactive" then
        do shell script "networksetup -setairportpower " & interface & "  on"
        display dialog "The Wi-Fi Network Adapter is turned: ON" with title "Wi-Fi Network Adapter Status" buttons {"OK"} default button 1 giving up after 3
    else
        do shell script "networksetup -setairportpower " & interface & "  off"
        display dialog "The Wi-Fi Network Adapter is turned: OFF" with title "Wi-Fi Network Adapter Status" buttons {"OK"} default button 1 giving up after 3
    end if
end run

ईथरनेट एडेप्टर उपयोग को संबोधित करने के लिए अपडेट किया गया:

on run
    set interfaceNumber to "en0"
    set interfaceName to "Display Ethernet"
    set status to do shell script "ifconfig " & interfaceNumber & " | awk '/status:/{print $2}'"

    if status is "inactive" then
        do shell script "networksetup -setnetworkserviceenabled " & quoted form of interfaceName & " on with administrator privileges"
        display dialog "Network Adapter " & interfaceNumber & " is turned: ON" with title interfaceName & " Network Adapter Status" buttons {"OK"} default button 1 giving up after 3
    else
        do shell script "networksetup -setnetworkserviceenabled " & quoted form of interfaceName & " off with administrator privileges"
        display dialog "Network Adapter " & interfaceNumber & " is turned: OFF" with title interfaceName & " Network Adapter Status" buttons {"OK"} default button 1 giving up after 3
    end if
end run

नोट: मेरे ईथरनेट एडेप्टर के नाम के ऊपर के कोड में "डिस्प्ले ईथरनेट" है और आपको अपने ईथरनेट एडेप्टर का नाम जो भी हो उसे बदलने की आवश्यकता होगी। आप सिस्टम वरीयताएँ> नेटवर्क में इसका पता लगा सकते हैं।


दिलचस्प है, मेरे सिस्टम पर en0 और en1 वायर्ड इंटरफेस हैं। en2 वायरलेस है। मैं वास्तव में नेटवर्क सेटिंग्स के माध्यम से वायरलेस बंद कर देता हूं। आपका टॉगलिंग का कार्यान्वयन, वह है जो मैं वायर्ड इंटरफ़ेस के लिए करना चाहता हूं। क्या मैं आपकी सेब स्क्रिप्ट को संशोधित कर सकता हूं?
हैरी पॉटर

@ हेरी पॉटर, मैंने एक ईथरनेट एडेप्टर का उपयोग करके एक उदाहरण के साथ अपना उत्तर अपडेट किया है।
user3439894

उसके लिए धन्यवाद! यह बहुत चालाक लगता है और ऐसा लगता है कि जैसा मैं चाहता हूं कि वह वैसा ही हो जाए। लेकिन, मैं उत्सुक हूं कि क्यों, इस प्रयास में जाना चाहिए - क्या यह इसलिए है क्योंकि टर्मिनल कमांड लगातार नहीं हैं? यही तो है जो मुझे परेशान कर रहा है।
हैरी पॉटर

@ हेरी पॉटर, मूल AppleScript कोड वाई-फाई के साथ प्रशासक विशेषाधिकारों के बिना काम करता है और मैंने इसे एक ऐप में बनाया है क्योंकि मैं वाई-फाई नेटवर्क एडाप्टर की स्थिति को दैनिक और कभी-कभी कई बार दैनिक रूप से टॉगल करता हूं। हां, मैं इसे टर्मिनल में कर सकता हूं या प्राथमिकताएं> नेटवर्क का उपयोग कर सकता हूं लेकिन यह हमेशा इस बारे में होता है कि दोहराए जाने वाले कार्यों को सबसे आसान क्या है। अगर आपका en0वाई-फाई बनाम इथरनेट होता तो यह सिर्फ उतना ही सरल होता जितना कि मैं मूल रूप से आपूर्ति करता था। ईथरनेट के लिए यह थोड़ा अलग है। यदि आप चाहें तो टर्मिनल का उपयोग करें! :) वे दोनों एक ही काम करेंगे।
user3439894

धन्यवाद! मैं इसे दोहराव से भी करूंगा। मुझे पागल कहो, लेकिन अगर मैं अपनी मशीनों से दूर हूं तो मैंने हमेशा सभी इंटरनेट एक्सेस को अक्षम कर दिया है। आपकी स्क्रिप्ट के साथ आप वायरलेस के लिए एक टॉगल कर सकते हैं और दूसरे वायर्ड के लिए। मैं शायद दोनों को लागू करूंगा। साझा करने के लिए धन्यवाद, सबसे अधिक सराहना की गई।
हैरी पॉटर

0

@ user3439894 ने इस प्रश्न के भाग का उत्तर दिया है कि ईथरनेट को कैसे निष्क्रिय किया जाए और इसे नीचे कैसे रखा जाए; मैं इस सवाल का समाधान करना चाहता हूं कि ifconfig en0 downऐसा क्यों नहीं किया गया।

मूल कारण यह है कि macOS में नेटवर्क कॉन्फ़िगरेशन के दो अलग-अलग स्तर होते हैं: लाइव स्टेट (जो ifconfig en0 downबदलता है) और "कॉन्फ़िगरेशन डेटाबेस" जो सिस्टम वरीयताएँ और / या networksetupकमांड के नेटवर्क फलक में बनाई गई सेटिंग्स से मेल खाती है । और एक "कॉन्फ़िगरेशन डेमॉन" ( configd) है जिसका काम यह है कि डेटाबेस जो कहता है कि यह होना चाहिए मैच के लिए लाइव नेटवर्क स्थिति को समायोजित करना।

इस तरह से काम करने का कारण यह है कि कॉन्फ़िगरेशन डेटाबेस लाइव राज्य की तुलना में अधिक लचीले और सुसंगत तरीके से नेटवर्क सेटिंग्स का वर्णन करता है। उदाहरण के लिए, कॉन्फ़िगरेशन डेटाबेस में कई समूह सेटिंग्स ("स्थान") हो सकते हैं और आसानी से उनके बीच स्विच कर सकते हैं, एक ही ऑपरेशन में सब कुछ समायोजित कर सकते हैं - इंटरफ़ेस स्थिति, आईपी सेटिंग्स, रूटिंग, डीएनएस आदि।

वैसे भी, जब आप उपयोग करते हैं ifconfig en0 down, तो आपने लाइव राज्य के बीच एक असंगतता पैदा की है और जो कॉन्फ़िगरेशन डेटाबेस कहता है वह राज्य होना चाहिए। configdइसे तुरंत नोटिस नहीं किया जाएगा, क्योंकि यह उस तरह की घटना नहीं configdहै (ईथरनेट को प्लग इन या अनप्लग्ड, वाईफाई नेटवर्क में शामिल होने या गिराए जाने आदि) के लिए देखा जाता है। लेकिन कुछ समय बाद, कोई चीज जाग जाएगी configdऔर यह हो सकता है कि इंटरफ़ेस स्थिति को वापस उसी स्थिति में लाए, जो कॉन्फ़िगरेशन डेटाबेस कहता है कि यह होना चाहिए।

तो, समाधान नेटवर्क वरीयताएँ या का उपयोग करने के लिए है networksetup। ये दोनों कॉन्फिग डेटाबेस में बदलाव करते हैं, फिर जागते हैं configdइसलिए यह लाइव स्टेट में परिवर्तन लागू करेगा।

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