我有一台嵌入式设备,如果连接到本地网络,它将使用 systemd-networkd 连接到 DHCP 服务器,如果没有连接到,它将恢复为 DHCP 服务器。我还没有实现它,但计划使用此处描述的答案https://unix.stackexchange.com/a/309046/114497。
这个答案指出使用将在启动时启动的脚本。我想知道如果用户在运行时拔下网络电缆并将其连接到 PC,他需要重新启动开发板才能启动脚本。所以问题是:当 systemd 的界面发生变化时,有没有办法启动脚本?
PS:我尝试使用网络调度程序没有成功。我尝试重新启动systemd-networkd
服务,拔掉以太网电缆,但我编写的脚本/usr/lib/networkd-dispatcher
未执行。
答案1
这回答解释当网络发生变化时,systemd 可以做什么...
有很多替代解决方案,但截至 06/2019 尚未实现仅使用 systemd 的直接简单解决方案
答案2
您可以改编我的net-o-matic
脚本,该脚本目前正在监视DOWN
寻找UP
.从一个条目开始@reboot
root
crontab
。
我编写了一个 bash 脚本来帮助解决此问题:https://github.com/waltinator/net-o-matic
它监视连接,当连接断开时,执行用户指定的操作来尝试重新连接。