質問が全てを物語っています。私が望むのは、有線接続が利用可能なときはいつでもW-LAN接続を無効にすることです。Ubuntu/Gnomeでそれを行うための最も簡単な方法は何でしょうか?
すべてのガイド(例えば guessnet についてのいくつかのガイド)では、ネットワーク全体の設定(WPA キー、DHCP、…)をしなければならないと書いてありましたが、このような単純な使用例にしては少し複雑すぎると感じました。私は、eth0
が接続されているときにwlan0
を無効にしたいだけです
47 None 2011-01-14
このスクリプトを/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 イーサネットアダプタで動作しました
64 derhoch 2011-12-13
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
役に立つことを願っています
8 mruellan 2014-09-28
gnomeのGUIアプローチのために、かなりシンプルに
時計の横にあるノームパネルのネットワークシステムインジケーターを右クリックします。(インジケータには、上下の矢印(LAN)と従来のWiFiファネルの2つのアイコンが表示されます。上/下のアイコンは、LANとWiFiの両方が接続されている場合、またはLANのみが接続されている場合に表示され、WiFiファネルはWiFiのみで接続されている場合に表示されます(LANが接続されていない場合)。(LAN Disconnected)) — [LAN trumps WiFi automatically.]
Edit Connections…」を選択します
- ワイヤレス」タブを選択します
- リストの最初の接続をダブルクリックし、「自動的に接続」ボックスのチェックを外します
- 適用…」ボタンをクリックします
- リスト内の各接続について繰り返します
これは、ネットワークアイコンを左クリックして利用可能なオンザフライの手動接続と切断のためのワイヤレスネットワークの操作を残し、NMは自動的にすべての時間を接続しようとせずに
当然のことながら、ネットワークアイコンを右クリックして「ワイヤレスを有効にする」選択を左クリックすることでワイヤレスを無効化/有効化することもでき、チェックマークの有無で示されるワイヤレスインターフェースを効果的にダウンまたはアップさせることができます
- LANは自動的にWiFiに切り替わりますので、WiFiを無効にする必要はありません。イーサネットケーブルを抜くだけで、シームレスにWiFiに接続を移行してくれるので、何も気にせずに移動することができます。同様に、LANの再接続でも
- LANはWiFiを切り札にしていますが、NM (Network Manager)は、異なるネットワーク上に同時に存在し、オンライン(WiFi)とローカルホスト(LAN)またはV/Vなどの両方で動作している場合に必要なものを見つけることができます
4 rjbradlow 2012-10-01
Just a guess but i assume ifplugd could help.ケーブルが使用されているときにwifiをシャットダウンさせることができます
2 ggustafsson 2011-01-15
スクリプトの名前は重要ではありません (私は単に 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を使った他のディストリビューションでも動作するはずです
2 joentjuh 2011-04-06
これは、Debian の unstable, kernel >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
1 Askmeanything 2015-03-12
これは Cyril Fessl の以前の回答を改良したものです。(私はコメントする評判を持っていません。) これはFedoraでも動作します。)このバリエーションは、インターフェース名にマッチしようとせず、デバイスの情報を /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: $*"; } if $DEBUG; then if [ -e "/sys/class/net/$IFACE/device" ]; then log "/sys/class/net/$IFACE/device exists" else log "/sys/class/net/$IFACE/device does not exist" fi if [ -e "/sys/class/net/$IFACE/wireless" ]; then log "/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 # Don't do anything if this is not a physical device. if [ ! -e "/sys/class/net/$IFACE/device" ]; then log "$IFACE not a physical device -- ignoring" exit 0 fi # Don't do anything if this is a wireless device. if [ -d "/sys/class/net/$IFACE/wireless" ]; then log "$IFACE not a wired device -- ignoring" exit 0 fi # Keep track of wired devices. When they go down, the # device node may go as well (e.g. USB Ethernet dongle), # so we'd have no way of telling what type the device was. touch $STATEDIR/$IFACE # Now shut down WiFi. log "shutting down WiFi" nmcli r wifi off ;; down) # Check whether we previously recognised $IFACE as a # physical, wired device. if [ ! -e $STATEDIR/$IFACE ]; then log "$IFACE not a wired device -- ignoring" exit 0 fi rm -rf $STATEDIR/$IFACE # Instead of checking a single file, we could also check # whether there are still files in $STATEDIR. If so, we # still have a wired device enabled... log "enabling WiFi" nmcli r wifi on ;; esac
1 Steven 2015-03-13
すでに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=""
1 Luis Cellino 2016-09-20
何らかの理由で、現在のトップanswer by derhochは、そうすべきであるにもかかわらず、私のためには動作しません。他の提案のいくつかは動作しますが、私は非常にシンプルなものを望んでいました。そこで、私は以下のスクリプト(/etc/NetworkManager/dispatcher.d/
に入れてeth0
の状態に応じてwifiをオンオフするようにしています)を使っています
#! /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
がダウンしていても何も出てきません)
0 Andy Forceno 2015-09-01
Ethernet接続中にサスペンドしても動作することを確認したい場合は、pre-down
アクションをdown
だけではなく/追加で使用することができます。pre-down
アクションはサスペンド時に発動するのに対し、down
アクションは発動しません
0 KIT-Inwi 2020-02-03