イーサネット(有線)を介してネットワークに接続している場合は、Wi-Fi無線を無効にし、有線接続がないときにWi-Fi接続を有効にするにはどうすればよいですか?デフォルトでは、有線/無線接続の状態を示すXORスイッチが必要です。
答え1
私が見つけたイリヤ・マトフスキーの脚本これを達成するためにこれが落ちるのです/etc/NetworkManager/dispatcher.d/70-wifi-wired-exclusive.sh
。
#!/bin/sh
name_tag="wifi-wired-exclusive"
syslog_tag="$name_tag"
skip_filename="/etc/NetworkManager/.$name_tag"
if [ -f "$skip_filename" ]; then
exit 0
fi
interface="$1"
iface_mode="$2"
iface_type=$(nmcli dev | grep "$interface" | tr -s ' ' | cut -d' ' -f2)
iface_state=$(nmcli dev | grep "$interface" | tr -s ' ' | cut -d' ' -f3)
logger -i -t "$syslog_tag" "Interface: $interface = $iface_state ($iface_type) is $iface_mode"
enable_wifi() {
logger -i -t "$syslog_tag" "Interface $interface ($iface_type) is down, enabling wifi ..."
nmcli radio wifi on
}
disable_wifi() {
logger -i -t "$syslog_tag" "Disabling wifi, ethernet connection detected."
nmcli radio wifi off
}
if [ "$iface_type" = "ethernet" ] && [ "$iface_mode" = "down" ]; then
enable_wifi
elif [ "$iface_type" = "ethernet" ] && [ "$iface_mode" = "up" ] && [ "$iface_state" = "connected" ]; then
disable_wifi
fi
また、このトグル操作を無効にするには、ファイルを生成するだけです/etc/NetworkManager/.wifi-wired-exclusive
(例:を介してtouch
)。