質問はそれをすべて言います。必要なのは、有線接続が利用可能なときはいつでも私のW-Lan接続を無効にすることです。 Ubuntu/Gnomeでそれを行う最も簡単な方法は何でしょうか?
すべてのガイド(たとえば、guessnetに関するガイド)で、ネットワーク全体の構成(WPAキー、DHCPなど)を構成する必要があることを発見しましたが、このような単純な使用例には少し複雑すぎることがわかりました。無効にするだけですwlan0
いつ eth0
接続されています。
このスクリプトを/etc/NetworkManager/dispatcher.d/99-wlan
にドロップできます:
#!/bin/bash
wired_interfaces="en.*|eth.*"
if [[ "$1" =~ $wired_interfaces ]]; then
case "$2" in
up)
nmcli radio wifi off
;;
down)
nmcli radio wifi on
;;
esac
fi
後で忘れないでください:
chmod +x /etc/NetworkManager/dispatcher.d/99-wlan
これは、従来のeth*
名と、en
で始まる新しいカーネル「予測可能な名前付きインターフェース」をキャッチし、バスパスまたはMACアドレスを使用して、各インターフェースの名前が同じになるようにします。すべてのブート。これは、私が試したUSB-C(パススルー)およびUSBイーサネットアダプターで機能し、組み込みのアダプターでも機能すると確信しています。
Network-managerのv0.9.10以降、最初のスクリプトを変更する必要があります
#!/bin/bash
if [ "$1" = "eth0" ]; then
case "$2" in
up)
nmcli radio wifi off
;;
down)
nmcli radio wifi on
;;
esac
fi
それが役に立てば幸い!
非常に単純にgnome GUIアプローチ...
時計のそばにあるgnomeパネルのネットワークシステムインジケーターを右クリックします。 (インジケーターは、上/下矢印(LAN)または従来のWiFiファンネルの2つのアイコンのいずれかになります。LANとWiFiの両方またはLANのみが接続されている場合に上/下アイコンが表示され、WiFiファンネルが表示されることに注意してください。 WiFiのみで接続(LAN切断))-[LANはWiFiに自動的に切り替わります。*]
「接続の編集...」を選択します
これにより、NMが常に自動的に接続することを試みずに、ネットワークアイコンを左クリックすることで、オンザフライの手動接続および切断のためにワイヤレスネットワークが動作可能になります。
当然、ネットワークアイコンを右クリックして[ワイヤレスを有効にする]選択を左クリックすることで、ワイヤレスを無効/有効にすることもできます。チェックマークの有無で示されるように、ワイヤレスインターフェースを効果的にダウンまたはアップします。
単なる推測ですが、ifplugdが役立つと思います。ケーブルが使用されている場合は、wifiをシャットダウンすることができます。
すでに電源管理に tlp を使用している場合は、これを行う機能があります。
Confファイル(/ etc/default/tlp)を変更する必要があります
# Radio devices to enable/disable when docked.
#DEVICES_TO_ENABLE_ON_DOCK=""
DEVICES_TO_DISABLE_ON_DOCK="wifi wwan"
# Radio devices to enable/disable when undocked.
DEVICES_TO_ENABLE_ON_UNDOCK="wifi"
#DEVICES_TO_DISABLE_ON_UNDOCK=""
これは、Cyril Fesslの以前の回答を改善したものです。 (コメントする評判はありません。)これはFedoraでも機能します。ネットワークインターフェースは、wlan0
、wlp6s0
、em1
、enp0s20u2u1
などの名前を持つことができます)。このバリエーションは、インターフェース名を照合するのではなく、デバイスの情報について/sys/class/net
を調べます。私のFedora 21ラップトップ(カーネル3.18)で動作し、Debian> = 7でも動作すると信じています。
#!/ bin/sh [$#-ge 2] || exit 1 DEBUG = false STATEDIR =/var/run/nm-wired mkdir -p $ STATEDIR IFACE = $ 1 ACTION = $ 2 myname = $(basename "$ 0")|| exit 1 log(){logger -p user.info -t "$ {myname} [$$]" "$ IFACE/$ ACTION:$ *"; } $ DEBUGの場合; then if [-e "/ sys/class/net/$ IFACE/device"];次に、 ログ "/ sys/class/net/$ IFACE/device exists" else log "/ sys/class/net/$ IFACE/device does not exist" fi if [-e "/ sys/class/net/$ IFACE/wireless"];次に、 ログ "/ sys/class/net/$ IFACE/wireless exists" else log "/ sys/class/net/$ IFACE/wireless does not exist" fi fi case $ {ACTION} in up) rm -rf $ STATEDIR/$ IFACE #これが物理デバイスでない場合は何もしないでください。 if [! -e "/ sys/class/net/$ IFACE/device"];次に、 log "$ IFACE not a physical device-ignoring" exit 0 fi #これが何であっても何もしないワイヤレスデバイス。 if [-d "/ sys/class/net/$ IFACE/wireless"];次に、 ログ "有線デバイスではない$ IFACE-無視" exit 0 fi #有線デバイスを追跡します。それらがダウンすると、 #デバイスノードも同様に移動する可能性があります(例:USBイーサネットドングル) #したがって、デバイスのタイプを知る方法はありません。 touch $ STATEDIR/$ IFACE #WiFiをシャットダウンします。 ログ「WiFiをシャットダウンしています」 nmcli r wifi off ;; down) #$ IFACEが以前に #物理的な有線デバイスとして認識されているかどうかを確認します。 if [! -e $ STATEDIR/$ IFACE];次に、 ログ "有線デバイスではない$ IFACE-無視" exit 0 fi rm -rf $ STATEDIR/$ IFACE #単一のファイルをチェックする代わりに、 #$ STATEDIRにまだファイルがあるかどうかをチェックすることもできます。その場合、 #有線デバイスがまだ有効になっています... log "enableing WiFi" nmcli r wifi on ;; esac
2つの単純な「スクリプト」を作成します。スクリプトの名前は重要ではなく(単にwlanを使用します)、ケーブルで接続されたネットワークインターフェイスが1つしかないため、「eth0」と呼ばれます... ifconfigで確認してください。わからないこれはwlan0だけでなく、ワイヤレスを完全に無効にすることに注意してください。 (複数のwlanインターフェースがあり、特定のインターフェースのみを無効にしたい場合の問題のみ)
これらのスクリプトは、ブール論理によって、2つ以上のケーブルネットワークインターフェイスがある状況に簡単に適合させることができます。
これらのスクリプトが「chmod + x」で実行可能であることを確認してください
/etc/network/ip-up.d/wlan
#!/bin/sh
# If eth0 goes up, disable wireless
if [ "$IFACE" = "eth0" ]; then
dbus-send --system --type=method_call --dest=org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.DBus.Properties.Set string:org.freedesktop.NetworkManager string:WirelessEnabled variant:boolean:false
fi
/etc/network/if-down.d/wlan
#!/bin/sh
# If eth0 goes down, enable wireless
if [ "$IFACE" = "eth0" ]; then
dbus-send --system --type=method_call --dest=org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.DBus.Properties.Set string:org.freedesktop.NetworkManager string:WirelessEnabled variant:boolean:true
fi
これにより、通常はGnomeパネルのシステムインジケーターとして表示されるNetworkManagerでワイヤレスを有効/無効にします。
Dbus-send行の代わりに「ifconfig wlan0 down」または「ifconfig wlan0 up」を使用することもできますが、これはよりユーザーフレンドリーで、Ubuntuのシステムユーティリティへの干渉が少ないはずです。
Ubuntu Desktop 10.10でテストされています。NetworkManagerおよびdbusを使用して、以前のバージョンまたは他のディストリビューションで動作するはずです。
これはDebian不安定版、カーネル> 3.17で動作します
#!/bin/sh
myname=$(basename "$0") || exit 1
log() { logger -p user.info -t "${myname}[$$]" "$*"; }
IFACE=$1
ACTION=$2
case ${IFACE} in
eth*|usb*)
case ${ACTION} in
up)
nmcli r wifi off
;;
down)
nmcli r wifi on
;;
esac
;;
esac
何らかの理由で、現在のトップ answer by derhoch は機能しますが、機能しません。他のいくつかの提案は機能しますが、私は非常にシンプルなものを望んでいました。それで、私は次のスクリプトを使用しています(これを/etc/NetworkManager/dispatcher.d/
に応じてwifiをオンまたはオフにしますeth0
のステータス。
#! /bin/bash
# Enable/disable wlan0 depending on eth0 and wlan0 current state
eth0_status=$(cat /sys/class/net/eth0/operstate)
wlan0_status=$(cat /sys/class/net/wlan0/operstate)
if [[ "$eth0_status" = "up" ]];
then
nmcli nm wifi off
Elif [[ "$wlan0_status" = "down" ]] && [[ "$eth0_status" = "down" ]];
then
nmcli nm wifi on
else
nmcli nm eth0 on
nmcli nm wlan0 off
fi
else
ステートメントはおそらく不要であり、状況によっては問題となることもありますが、念のために残しておきます(そのステートメントがない場合、eth0
はダウンしています。アップすることはありません)。
ソリューションを使用したい場合は、イーサネットが接続されているときに一時停止し、デバイスのプラグを抜いてウェイクアップしても機能することを確認するには、pre-down
アクションの代わりに/に加えてdown
に追加。 pre-down
アクションはサスペンド時にトリガーされますが、down
はトリガーされません。