我想在特定接口上更改IP地址时触发服务。在Linux(Kernel 3.19)上使用systemd实现这个或其他方法是否有目标?
该服务将用于将SIGNAL发送到已定义的进程。 Linux正在嵌入式系统上运行。
谢谢!
答案 0 :(得分:1)
StackOverflow的其他问题有一个解决方案。就在这里: Detecting a change of IP address in Linux
我喜欢这段代码,这很简单,你需要一个能满足你需要的快速工作(我做了一些改动):
#!/bin/bash
OLD_IP=`cat ip.txt`
NEW_IP=`/sbin/ifconfig | awk -F "[: ]+'{ print $4}'`
if [ $NEW_IP != OLD_IP ]; then
YOU_COMMAND <commands>
echo $NEW_IP > ip.txt
fi
exit 0
答案 1 :(得分:1)
由于您使用Systemd,因此您可能已使用systemd-networkd来管理设备,而不是依赖第三方代码。
您可以使用结构化日记输出来获取当前 BOOD_ID 的最后2个ADDRESS
字段。(遗憾的是,systemd-networkd中没有地址更改的通知机制):
→ sudo journalctl -F ADDRESS -u systemd-networkd -n 2
192.168.178.29
因此,如果只有一个行输出,则没有地址更改。