如果有线/有线网络可用,则禁用 WLAN

Wol*_*ekt 49 networking linux wireless-networking ubuntu-10.04

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

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

小智 67

您可以将此脚本删除到/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
Run Code Online (Sandbox Code Playgroud)

之后不要忘记:

chmod +x /etc/NetworkManager/dispatcher.d/99-wlan
Run Code Online (Sandbox Code Playgroud)

这会捕获旧eth*名称和新内核“可预测的命名接口”,它们以en总线路径或 MAC 地址开头,然后使用总线路径或 MAC 地址,以便每个接口的名称在每次启动时都相同。这适用于我尝试使用的 USB-C(直通)和 USB 以太网适配器,我相信它也适用于内置适配器。

  • 使用 nmcli 1.0.2 版时,我必须使用 `nmcli r wifi` 更改 `nmcli nm wifi`,其中 `r` 表示 *radio* (3认同)
  • @joellord:每次网络接口启动或停止时都会自动运行此脚本。当您断开 eth0 时,您的无线网络将启用。当您连接 eth0 时,您的无线将被禁用。 (2认同)
  • Solid - 完美运行,漂亮的最小脚本。 (2认同)

小智 8

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

#!/bin/bash

if [ "$1" = "eth0" ]; then
    case "$2" in
        up)
            nmcli radio wifi off
            ;;
        down)
            nmcli radio wifi on
           ;;
   esac
fi
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!

  • 这个解决方案是不对的,因为它只有在你的局域网接口被称为“eth0”时才有效。 (2认同)