我目前每天在以下两种设置之间切换:
1) 通过 WiFi 网络连接到互联网。
2)让我的(Ubuntu 16.04)笔记本电脑通过有线连接连接到互联网,然后通过 Ubuntu 的内置热点功能与我的其他设备共享此连接。
目前,从 1 切换到 2 需要我手动通过网络管理器中的“连接到隐藏网络”对话框;同样,从 2 切换到 1 需要我手动断开热点并连接到 WiFi 网络。这不是很多工作,但我经常这样做,以至于我希望它自动化。
它不像为热点启用自动连接那么简单,因为那时它会覆盖其他网络的自动连接功能,而不是当我没有通过有线连接连接时将我连接到 WiFi 网络,我最终得到一个热点但没有互联网。所以我需要一个解决方案:
- 每当我通过有线连接连接到互联网时,都会将我连接到热点。
- 在没有以太网连接时断开我与热点的连接。
- 只要它们可用并且没有以太网连接,就会自动将我连接到具有 autoconnect=true 的网络之一。
关于如何做到这一点的完整解释会很好,但也非常感谢参考一本好的(非专家)手册来设置这些规则。
据我了解,当您插入优于 wifi 连接的以太网电缆时,wifi 连接会自动断开。以类似的方式,断开以太网电缆自动连接到您首选的 wifi(当然前提是您在网络管理器的常规选项卡上选中了自动连接到该 Wifi 网络的复选框。在默认安装的 Ubuntu 16.04.3 上测试
因此,如果我对您的理解正确,您只想在连接以太网电缆时自动启动笔记本电脑上的热点服务,并在断开以太网电缆连接时禁用该服务。
使用 bash 脚本这应该相当简单,并且
nmcli
“nmcli”是一个强大的网络工具,允许您随意上下连接并获取大量相关信息。要找出您将编写脚本的连接,只需
nmcli -t monitor| grep primary
在通过 wifi 连接并插入以太网电缆时运行即可。您感兴趣的连接nmcli
将被'
s包围示例: 'Wired connection 1' 逻辑是当连接 'Connection' 时会打开热点(您可能会发现有必要使用命令sleep
或使用在您的脚本中进行的-w
切换会nmcli
等待指定的秒数,以便命令完成,然后再发出下一个命令。关闭连接就像
nmcli 'connection name' down
打开连接一样简单nmcli 'connection name' up
注意:要通过脚本进行完全控制,您可能需要至少在网络管理器中为您的 wifi 连接禁用自动连接选项,因为它会在可用时尝试自动连接,并且可能会干扰您尝试完成的操作。摘自
man nmcli
:因此,一旦您确定您的以太网已连接,您可以发出命令关闭 wifi 连接示例:
nmcli connection my-wifi down
然后打开热点连接示例:nmcli connection my-hotspot up
有关如何根据网络连接自动运行脚本的更多信息,请参阅此。有关“nmcli”的更多详细信息,请查看手册页。这是有关如何创建热点的信息。
为我完成的解决方案(在 Elder Geek 的帮助下找到)。
我为所有我想自动连接的网络保持自动连接,但对热点关闭。然后,我将以下脚本(具有此 Wiki 页面上描述的正确权限)放在文件夹中
/etc/NetworkManager/dispatcher.d
到目前为止,这非常有效;每当插入以太网电缆时,甚至当计算机在插入以太网电缆的情况下启动或唤醒时,都会自动连接到热点。只要拔出以太网电缆,就会自动断开与热点的连接,然后自动连接到可用的 WiFi 网络。