背景
当Linux机器的网络出现变化时,例如WiFi掉线、有线网络断开等情况,可以执行自定义脚本,进行后续操作。
实现
使用NetworkManager中的Dispatcher组件,可以实现在网络出现变化时,执行自定义脚本。相关文档:NetworkManager官网man手册
在/etc/NetworkManager/dispatcher.d
中新建脚本,给予755权限,用户与组给root
,就可以编写脚本了。nm在调用脚本时会给脚本提供两个参数。
interface
,即接口名称,例如eth0
、wlan0
等action
,执行动作,例如up
,down
等
脚本中注意处理好,就可以实现对网络状态的监控了。
其他的相关信息,请参见官方文档,还有一些环境变量可以获取更多信息,因为我没有用到,所以此处不再赘述。
官方文档没有提到的注意事项
NetworkManager调用脚本时,所在的系统环境编码很有可能不是UTF-8,而是ANSI或者其他。这会导致如果脚本中有中文,例如Python中有变量为中文会报错。在调用前,可手动修改编码为UTF-8。