每次插入有线以太网电缆时,自动禁用 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