![如果连接了 LAN,请禁用 WiFi](https://linux22.com/image/1019668/%E5%A6%82%E6%9E%9C%E8%BF%9E%E6%8E%A5%E4%BA%86%20LAN%EF%BC%8C%E8%AF%B7%E7%A6%81%E7%94%A8%20WiFi.png)
几天前我安装了 Ubuntu 20.04。大多数功能都运行良好。
但是如果我通过 LAN 连接,我会一次又一次收到 WiFi 无法连接的警告。
这根本不符合逻辑。
如果我有 LAN,那么我就不需要 WiFi。
当然,我可以手动禁用它,但默认运行的自动化功能就可以了。
我该如何解决这个问题?
答案1
来自 Ubuntu 的手册页nmcli-examples
https://manpages.ubuntu.com/manpages/focal/man7/nmcli-examples.7.html例 14. 有一个脚本使以太网和 Wi-Fi 互斥
#!/bin/bash
export LC_ALL=C
enable_disable_wifi ()
{
result=$(nmcli dev | grep "ethernet" | grep -w "connected")
if [ -n "$result" ]; then
nmcli radio wifi off
else
nmcli radio wifi on
fi
}
if [ "$2" = "up" ]; then
enable_disable_wifi
fi
if [ "$2" = "down" ]; then
enable_disable_wifi
fi
This dispatcher script makes Wi-Fi mutually exclusive with wired networking. When a wired interface is connected, Wi-Fi will be set to airplane mode (rfkilled). When the wired interface is disconnected, Wi-Fi will be turned back on. Name this script e.g. 70-wifi-wired-exclusive.sh and put it into /etc/NetworkManager/dispatcher.d/ directory. See NetworkManager(8) manual page for more information about NetworkManager dispatcher scripts.
使新脚本可执行:chmod a+rx /etc/NetworkManager/dispatcher.d/70-wifi-wired-exclusive.sh
答案2
在 Ubuntu 23.04(德语)上,我不得不稍微修改 PRATAP 的答案,因为它不起作用。我改变了
enable_disable_wifi () { result=$(nmcli dev | grep "ethernet" | grep -w "connected") if [ -n "$result" ]; then nmcli radio wifi off else nmcli radio wifi on fi }
到
enable_disable_wifi ()
{
found_eth=$(nmcli dev | grep "ethernet")
eth_disconn=$(nmcli dev | grep "ethernet" | grep -w "nicht verbunden")
if [ -n "$found_eth" ] && [ -z "$eth_disconn" ]; then
nmcli radio wifi off
else
nmcli radio wifi on
fi
}
现在它可以正常工作了。(除了使 .sh 文件的所有者可执行之外,我还必须将其所有者更改为 root(在 networkmanager-dispatcher 手册页中找到了这一点)。)我不太清楚为什么,但怀疑它之前不起作用,因为“verbunden”(即“connected”)是“nicht verbunden”(即“disconnected”)的一部分。
现在不知道这是否仍然有意义,但我想我会分享它。