有线连接时自动禁用 wifi(无线)吗?

有线连接时自动禁用 wifi(无线)吗?

每次插入有线以太网电缆时,自动禁用 Wifi/无线连接的最佳方法是什么?我希望稍后拔掉电缆后重新启用它。

此外,我有时喜欢与其他无线用户共享有线连接(反之亦然)。如果我能以某种方式免除这些设置就太好了。

我正在使用 11.10 Oneiric,它使用 NetworkManager。

答案1

下面的脚本,放入/etc/NetworkManager/dispatcher.d/99-disable-wireless-when-wired,大部分情况下都有效——即使我想共享有线和无线或反之亦然,它也会禁用无线。

为此,请在终端中运行以下命令:

sudo nano /etc/NetworkManager/dispatcher.d/99-disable-wireless-when-wired

并将以下代码粘贴到文本编辑器中。

#!/bin/sh
myname=${0##*/}
log() { logger -p user.info -t "${myname}[$$]" "$*"; }
IFACE=$1
ACTION=$2

release=$(lsb_release -s -c)
case ${release} in
    trusty|utopic) nmobj=nm;;
    *) nmobj=radio;;
esac

case ${IFACE} in
    eth*|usb*|en*)
        case ${ACTION} in
            up)
                log "disabling wifi radio"
                nmcli "${nmobj}" wifi off
                ;;
            down)
                log "enabling wifi radio"
                nmcli "${nmobj}" wifi on
                ;;
        esac
        ;;
esac

然后保存并退出。

请注意脚本中的以下条件,如NetworkManager 手册页

每个脚本应该:

  • 常规文件,
  • 归 root 所有,
  • 无法由组或其他方写入,
  • 未设置 uid,
  • 并可由所有者执行。

除了nmcli radio wifi off(或nmcli nm wifi off对于较旧版本的 NetworkManager),还有rfkill block wifi。但是,如果rfkill使用 而不是nmcli,较新版本的 NetworkManager 将在启动期间重新打开 wifi。

答案2

根据其他答案,我想出了这个(在 Kubuntu 20.04 上测试)。

它会自动断开有线连接的 wifi,但以 结尾的连接名称除外-hotspot(例如 Kubuntu 用于创建的接入点连接的默认名称)。它允许通过电缆共享无线热点。因此,它不会禁用所有 WiFi 的无线电,而是断开您正在使用的网络。拔下电缆后,它会重新连接无线设备wlo1,从而使其重新连接到最后使用的 WiFi 网络。

请注意,如果您关闭电脑时没有连接线,然后在打开电脑之前将其插入,电脑可能会同时使用 wifi 和有线连接启动。同样,我推测,如果您在电脑关闭时拔掉线,电脑在启动时不会自动连接。

sudo nano /etc/NetworkManager/dispatcher.d/99-disable-wireless-when-wired
sudo chmod 0744 /etc/NetworkManager/dispatcher.d/99-disable-wireless-when-wired
#!/bin/sh
myname=${0##*/}
log() { logger -p user.info -t "${myname}[$$]" "$*"; }
IFACE=$1
ACTION=$2
case ${IFACE} in
    eth*|usb*|en*)
        case ${ACTION} in
            up) # when plugging ethernet cable
                log "disconnecting wifi when wired"
                # list active connections
                nmcli -f uuid,type,name connection show --active |
                # filter wifi except names ending with -hotspot, return UUID
                awk '/\S\s+wifi\y/ && !/-hotspot\s*$/ {print $1;}' |
                # disconnect these UUIDs
                xargs -r nmcli connection down
                ;;
            down) # when unplugging ethernet cable
                log "reconnecting wifi when not wired"
                # auto-choose wifi to reconnect
                nmcli device connect wlo1
                ;;
        esac
        ;;
esac

答案3

您可以安装tlp包并启用以下选项/etc/tlp.conf

DEVICES_TO_DISABLE_ON_LAN_CONNECT="wifi wwan"
DEVICES_TO_ENABLE_ON_LAN_DISCONNECT="wifi wwan"

进而

sudo service tlp restart

相关内容