

用 NM-dispatcher 实现 WiFi 开关的自动控制
source link: https://blog.sbw.so/u/nm-dispatcher-auto-switch-between-wifi-ethernet.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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