如果有有线/电缆网络可用,请禁用 WLan

如果有有线/电缆网络可用,请禁用 WLan

这个问题说明了一切。我想要的只是当有线连接可用时,我的 W-Lan 连接应该被禁用。在 Ubuntu/Gnome 中,最简单的方法是什么?

在所有指南中(例如一些关于 guessnet 的指南),我发现我必须配置我的整个网络配置(WPA 密钥、DHCP 等),但我发现对于这样一个简单的用例来说,这有点太复杂了。我只想在连接wlan0时禁用。eth0

答案1

您可以将此脚本拖放到/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*名称和新内核“可预测命名接口”,这些接口以总线路径或 MAC 地址开头en,然后使用总线路径或 MAC 地址,以便每个接口的名称在每次启动时都相同。这适用于我尝试过的 USB-C(直通)和 USB 以太网适配器,我相信它也能适用于内置适配器。

答案2

从网络管理器 v0.9.10 开始,必须修改第一个脚本

#!/bin/bash

if [ "$1" = "eth0" ]; then
    case "$2" in
        up)
            nmcli radio wifi off
            ;;
        down)
            nmcli radio wifi on
           ;;
   esac
fi

希望能帮助到你!

答案3

对于 gnome GUI 方法来说非常简单......

  1. 右键单击时钟上方的 gnome 面板中的网络系统指示器。(指示器将是两个图标之一;向上/向下箭头(LAN)或传统的 WiFi 漏斗。请注意,当 LAN 和 WiFi 或仅 LAN 连接时,将出现向上/向下图标,而当仅通过 WiFi 连接时,将出现 WiFi 漏斗。(LAN 断开连接))--[LAN 自动胜过 WiFi。*]

  2. 选择‘编辑连接...’

  3. 选择“无线”选项卡。
  4. 双击列表中的第一个连接,然后取消选中“自动连接”框。
  5. 单击“应用...”按钮。
  6. 对列表中的每个连接重复此操作。

这样,无线网络就可以随时手动连接和断开,只需左键单击网络图标即可,而无需 NM 一直尝试自动连接您。

当然,您也可以通过右键单击网络图标,然后左键单击“启用无线”选项来禁用/启用无线,从而根据复选标记的存在或不存在来有效地关闭或打开无线接口。

  • LAN 自动优先于 WiFi,无需禁用 WiFi。只需拔下以太网电缆即可无缝将连接转移到 WiFi,您可以轻松拿起设备四处走动。重新连接 LAN 也是如此。
  • 尽管 LAN 确实胜过 WiFi,但如果您同时在不同的网络上并且同时在线(WiFi)和本地主机(LAN)或 V/V 工作,NM(网络管理器)将找到您所寻找的内容。

答案4

创建两个简单的“脚本”,脚本的名称并不重要(我只是使用 wlan),我假设只有一个有线网络接口,因此称为“eth0”...如果您不确定,请使用“ifconfig”检查。请注意,这会完全禁用无线,而不仅仅是 wlan0。(如果您有多个 wlan 接口并且只想禁用特定的接口,则会出现问题)

这些脚本可以通过布尔逻辑轻松地适应具有两个或更多有线网络接口的情况。

确保这些脚本可以通过“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

这将启用/禁用 NetworkManager 中的无线功能,通常可以在 Gnome 面板中的系统指示器中找到。

您也可以使用“ifconfig wlan0 down”或“ifconfig wlan0 up”代替 dbus-send 行,但这应该更加用户友好并且对 Ubuntu 系统实用程序的干扰更少。

已使用 Ubuntu Desktop 10.10 进行测试,并且应该可以与使用 NetworkManager 和 dbus 的早期版本或其他发行版兼容。

相关内容