设置仅在以太网连接时自动连接到热点

设置仅在以太网连接时自动连接到热点

我目前每天都会在以下两种设置之间切换:

1)通过WiFi网络连接到互联网。

2)将我的(Ubuntu 16.04)笔记本电脑通过有线连接连接到互联网,然后通过 Ubuntu 的内置热点功能与我的其他设备共享此连接。

目前,从 1 切换到 2 需要我手动浏览网络管理器中的“连接到隐藏网络”对话框;同样,从 2 切换到 1 需要我手动断开热点并连接到 WiFi 网络。这不需要做太多工作,但我经常这样做,所以我希望它能自动化。

这并不像启用热点的自动连接那么简单,因为当我没有通过有线连接时,它会覆盖其他网络的自动连接功能,而不是将我连接到 WiFi 网络,最终我会得到热点,但没有互联网。所以我需要一个解决方案:

  • 每当我通过有线连接连接到互联网时,它都会将我连接到热点。
  • 当没有以太网连接时断开我与热点的连接。
  • 只要网络可用并且没有以太网连接,就会自动将我连接到具有 autoconnect=true 的网络之一。

对于如何做到这一点的完整解释会很好,但如果能提供一份关于如何制定此类规则的优秀(非专家)手册的参考也会非常受欢迎。

答案1

据我所知,当您插入以太网电缆时,该电缆会取代 wifi 连接,并且 wifi 连接会自动断开。类似地,断开以太网电缆会自动连接到您首选的 wifi(当然,前提是您在网络管理器的常规选项卡上选中了自动连接到该 Wifi 网络的复选框。在默认安装的 Ubuntu 16.04.3 上进行了测试

因此,如果我理解正确的话,您只想在以太网电缆连接时自动启动笔记本电脑上的热点服务,并在以太网电缆断开时禁用该服务。

使用 bash 脚本来执行此操作应该相当简单,并且nmcli“nmcli”是一个强大的网络工具,可让您随意建立或断开连接并获取大量相关信息。

要了解您将为哪些连接编写脚本,只需nmcli -t monitor| grep primary在通过 wifi 连接时运行并插入以太网电缆即可。您感兴趣的连接nmcli将是那些被's包围的连接例子:“有线连接 1” 的逻辑是,当“连接”连接时会启动热点(您可能需要使用该命令sleep或利用-w开关nmcli在脚本中等待指定的秒数以使命令完成,然后再发出下一个命令。

断开连接很简单,nmcli 'connection name' down建立连接也很简单nmcli 'connection name' up

笔记:为了通过脚本进行完全控制,您可能需要实际禁用自动连接选项,至少对于网络管理器中的 wifi 连接,因为它会在可用时尝试自动连接,并且可能会干扰您尝试完成的操作。摘录自man nmcli

There may be multiple connections that apply
       to a device, but only one of them can be active on that device at any
       given time. The additional connections can be used to allow quick
       switching between different networks and configurations.

因此,一旦你确定你的以太网已连接,你就可以发出命令来关闭 wifi 连接例子: nmcli connection my-wifi down然后热点连接起来例子: nmcli connection my-hotspot up

有关如何根据网络连接自动运行脚本的更多信息,请参阅这。有关“nmcli”的更多详细信息,请查看请参阅手册页。以下是如何创建热点。

答案2

为我解决了这个问题的解决方案(在 Elder Geek 的帮助下找到)。

我保持自动连接对于我想要自动连接的所有网络,但是离开热点。然后我将以下脚本(具有正确的权限,如上所述)放入此 Wiki 页面)文件夹中/etc/NetworkManager/dispatcher.d

!/bin/bash

interf=$1
state=$2

if [ $interf = "my-ethernet-device" -a $state = "up" ]; then
    nmcli connection up 'my-hotspot'
fi

if [ $interf = "my-ethernet-device" -a $state = "down" ]; then
    nmcli connection down 'my-hotspot'
fi

到目前为止,效果非常好;只要插入以太网电缆,甚至在插入以太网电缆的情况下计算机启动或唤醒时,都会自动连接到热点。只要拔出以太网电缆,就会自动断开热点连接,然后自动连接到可用的 WiFi 网络。

相关内容