平时在家用的笔记本由于从来没移动过位置,为了网络稳定就直接插上有线使用了。由于无线网络开着会一直扫描 WiFi 热点,也会占用一些资源,于是我就把无线开关直接关掉了。但是偶尔笔记本也要带出去或者在其它地方用一下,这时候拔掉网线后又要去打开无线网络的开关,就很烦。于是索性直接利用 NetworkMangaer 的 dispatcher 功能:实现了在有线插入时,自动关掉无线;有线网络拔出时,自动打开无线这个功能。
NetworkManager-dispatcher.service
NetworkManager是Linux发行版本中比较强大好用的网络管理套件了,它提供了一个NetworkManager-dispatcher服务,可以用来添加一些“钩子”脚本,在网络发生特定变化的时候进行一些自定义操作。例如在网络连接成功后自动连接VPN等。
首先执行:
查看一下这个分发服务的运行状态,默认情况下这个服务应该是未激活的。使用:
来开启这个服务。服务开启后,当网络状态发生变化的时候,就会执行/etc/NetworkManager/dispatcher.d/目录下的脚本。我们在这个目录下新建一个wlan_auto_toggle.sh的 Shell 脚本,并写入以下内容:
其中$1是发生变化的设备名称,有线网卡在不同机器的可能不一样,一般的命名为ethX或者enpXsY这种形式。而$2就是状态,我们只需要简单的做个判断,在有线设备激活的时候执行命令关闭 WiFi,在有线设备停用的时候开启 WiFi 即可。使用:
可以查看这个服务的执行日志。