![当特定网络接口通过 systemd/networkctl 启动时,如何使用脚本?](https://linux22.com/image/791137/%E5%BD%93%E7%89%B9%E5%AE%9A%E7%BD%91%E7%BB%9C%E6%8E%A5%E5%8F%A3%E9%80%9A%E8%BF%87%20systemd%2Fnetworkctl%20%E5%90%AF%E5%8A%A8%E6%97%B6%EF%BC%8C%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E8%84%9A%E6%9C%AC%EF%BC%9F.png)
我需要在使用 systemd/networkctl 启动特定网络接口时运行一个脚本,即每次它进入“可路由”状态时。
当接口启动或关闭时,设备保持“活动”状态,即我不能依赖“sys-subsystem-net-devices-$DEVICE.device”单元。
我尝试创建一个路径单元来监视“/sys/class/net/$DEVICE/operstate”,但这似乎不适用于 sysfs 文件系统。
还有其他方法可以做到这一点吗?
答案1
安装networkd-broker
服务(或旧版本networkd-dispatcher
)。它通过 D-Bus 对网络事件做出反应并相应地运行 shell 脚本。