有線時に無線LAN(無線)を自動的に無効にしますか?


26

有線イーサネットケーブルを接続するたびにWifi /ワイヤレス接続を自動的に無効にする最良の方法は何ですか?後で電線を外したときに再び有効にしたいのですが。

また、私は有線接続を他のワイヤレスユーザーと共有したい場合があります(またはその逆)。どういうわけかこれらのセットアップを免除できればいいと思います。

NetworkManagerを使用する11.10 Oneiricを使用しています。

回答:


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

次に、保存して終了します。

NetworkManagerのマニュアルページに記載されいるように、スクリプトに関する次の条件に注意してください

各スクリプトは次のとおりです。

  • 通常のファイル、
  • ルートが所有し、
  • グループや他のユーザーによる書き込み不可
  • set-uidではなく、
  • 所有者によって実行可能。

代わりにnmcli radio wifi off(またはnmcli nm wifi offNetworkManagerの古いバージョン用)がありrfkill block wifiます。ただし、のrfkill代わりにが使用されている場合nmcli、NetworkManagerの新しいバージョンは起動中にwifiをオンに戻します。


スクリプトは、どの構成が必要かをどのように判断できますか?rfkill unblock wifi接続eth0して共有したいのに、どうしてやるrfkill block wifi必要がないのですか?
ワルチネーター

@waltinator:接続が確立すると、NetworkManagerはCONNECTION_UUIDその接続の識別子に名前が付けられた環境変数を設定します。スクリプトは、「標準」有線接続を宣言した接続に対してのみWiFiを無効にeth0し、別の接続によってアクティブになっている場合は有効のままにしておくことができると考えていました。私はそれを試していないので、それが機能するかどうかはわかりません。しかし、単に手動で制御することについてのあなたのポイントは良いものです。
リチャードハンセン

1
eth0|usb0)USBテザリングが有効化/無効化されたときにWiFiを無効化/有効化するためにも使用します。
krlmlr

1
一番便利!rfkillを使用する代わりに、コマンドnmcli nm wifi offとを使用しましたnmcli nm wifi on。しかし、nmcliコマンドの方が優れていると信じる理由は特にありません。NetworkManagerの方法ですべてを実行したかっただけです。
ジェシーハレット14年

3
switchステートメントは、「eth * | usb * | en *)」と読みます。udev197から「予測可能なネットワークインターフェイス名」[1]が導入されているためです。したがって、ネットワークカードの名前はeno1 / ens1などであり、古いeth *およびusb *の命名と一致しません。[1] freedesktop.org/wiki/Software/systemd/…–
doublehelix
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.