वायर्ड होने पर स्वचालित रूप से वाईफ़ाई (वायरलेस) को अक्षम करें?


26

जब भी मैं वायर्ड ईथरनेट केबल में प्लग करता हूं, तो अपने वाईफाई / वायरलेस कनेक्शन को स्वचालित रूप से अक्षम करने का सबसे अच्छा तरीका क्या है? जब मैं बाद में वायर को अनप्लग करता हूं तो मैं इसे फिर से सक्षम करना चाहूंगा।

इसके अलावा, मैं कभी-कभी अन्य वायरलेस उपयोगकर्ताओं (या इसके विपरीत) के साथ वायर्ड कनेक्शन साझा करना पसंद करता हूं। यह अच्छा होगा अगर मैं किसी तरह इन सेटअपों को छूट दे सकता हूं।

मैं 11.10 Oneiric का उपयोग कर रहा हूं, जो NetworkManager का उपयोग करता है।

जवाबों:


31

निम्नलिखित स्क्रिप्ट, /etc/NetworkManager/dispatcher.d/99-disable-wireless-when-wiredज्यादातर काम करता है - यह तब भी वायरलेस को निष्क्रिय करता है जब मैं वायरलेस या इसके विपरीत वायर्ड साझा करना चाहता हूं।

ऐसा करने के लिए, टर्मिनल में निम्न कमांड चलाएँ:

sudo nano /etc/NetworkManager/dispatcher.d/99-disable-wireless-when-wired

और निम्नलिखित कोड को टेक्स्ट एडिटर में पेस्ट करें।

#!/bin/sh
myname=${0##*/}
log() { logger -p user.info -t "${myname}[$$]" "$*"; }
IFACE=$1
ACTION=$2

release=$(lsb_release -s -c)
case ${release} in
    trusty|utopic) nmobj=nm;;
    *) nmobj=radio;;
esac

case ${IFACE} in
    eth*|usb*|en*)
        case ${ACTION} in
            up)
                log "disabling wifi radio"
                nmcli "${nmobj}" wifi off
                ;;
            down)
                log "enabling wifi radio"
                nmcli "${nmobj}" wifi on
                ;;
        esac
        ;;
esac

फिर सहेजें और बाहर निकलें।

नेटवर्क मैनजर मैनुअल पेज में प्रलेखित, स्क्रिप्ट पर निम्नलिखित शर्तों पर ध्यान दें :

प्रत्येक स्क्रिप्ट होनी चाहिए:

  • एक नियमित फ़ाइल,
  • जड़ के स्वामित्व में,
  • समूह या अन्य द्वारा योग्य नहीं है,
  • सेट-यूआईडी नहीं,
  • और स्वामी द्वारा निष्पादन योग्य।

इसके बजाय nmcli radio wifi off(या nmcli nm wifi offNetworkManager के पुराने संस्करणों के लिए), वहाँ भी है rfkill block wifi। हालाँकि, यदि rfkillइसके बजाय उपयोग किया जाता है , तो nmcliNetworkManager के नए संस्करण बूट के दौरान वाईफ़ाई को वापस चालू कर देंगे।


स्क्रिप्ट कैसे बता सकती है कि आपको कौन सा कॉन्फ़िगरेशन चाहिए? क्यों rfkill unblock wifiजुड़ा होने के बाद ही noy करते हैं eth0और आप साझा करना चाहते हैं, तो rfkill block wifiजब आप कर रहे हैं?
वाल्टिनेटर

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

1
eth0|usb0)USB टेदरिंग सक्रिय / निष्क्रिय होने पर वाईफाई को अक्षम / सक्षम करने के लिए भी उपयोग करें ।
krlmlr

1
सबसे उपयोगी! Rfkill का उपयोग करने के बजाय, मैंने कमांड का उपयोग किया nmcli nm wifi offऔर nmcli nm wifi on। लेकिन मेरे पास यह मानने का कोई विशेष कारण नहीं है कि nmcli कमांड बेहतर हैं। मैं सिर्फ NetworkManager तरीके से सब कुछ करना चाहता था।
जेसी हैलट

3
स्विच स्टेटमेंट को "eth * | usb * | en *)" पढ़ना चाहिए, क्योंकि udev197 से शुरू होकर "प्रीडिक्टेबल नेटवर्क इंटरफेस नेम्स" [1] पेश किया गया है। नेटवर्क कार्ड को इस प्रकार eno1 / ens1 और समान नाम दिया गया है और यह पुराने eth * और usb * नामकरण से मेल नहीं खाता है। [1] freedesktop.org/wiki/Software/systemd/…
fre:
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.