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


26

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

另外,有时我想与其他无线用户共享有线连接(反之亦然)。如果能以某种方式免除这些设置,那将是很好的。

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

Answers:


31

放入以下脚本,/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手册页中所述

每个脚本应为:

  • 常规文件,
  • 由根拥有,
  • 不能按组或其他方式写,
  • 没有设置uid
  • 并由所有者执行。

代替nmcli radio wifi off(或nmcli nm wifi off对于较旧的NetworkManager版本),还有rfkill block wifi。但是,如果rfkill使用代替nmcli,则新版本的NetworkManager将在引导过程中重新打开wifi。


脚本如何告诉您所需的配置?为什么rfkill unblock wifi在连接eth0并想要共享之后才做,然后rfkill block wifi在完成后再做呢?
守夜者2012年

@waltinator:建立连接时,NetworkManager会设置一个名为CONNECTION_UUID该连接标识符的环境变量。我以为脚本可以对已声明为“标准”有线连接的连接禁用WiFi,但如果eth0被其他连接激活则保持启用状态。我没有尝试过,所以不知道它是否有效。但是,关于手动控制它的观点是很好的。
理查德·汉森

1
使用eth0|usb0)时,USB绑定被激活时也禁用/启用WIFI /停用。
krlmlr

1
最有用!我没有使用rfkill,而是使用了命令nmcli nm wifi offnmcli nm wifi on。但是我没有任何特殊的理由相信nmcli命令会更好。我只是想以NetworkManager的方式做所有事情。
杰西·哈雷特

3
switch语句应显示为“ eth * | usb * | en *)”,因为从udev197开始引入了“可预测的网络接口名称” [1]。因此,网卡被命名为eno1 / ens1,并且与之类似,并且与旧的eth *和usb *命名不匹配。[1] freedesktop.org/wiki/Software/systemd/…–
doublehelix
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.