检测接口上的IP地址更改

时间:2016-06-14 14:51:23

标签: linux networking ip systemd

我想在特定接口上更改IP地址时触发服务。在Linux(Kernel 3.19)上使用systemd实现这个或其他方法是否有目标?

该服务将用于将SIGNAL发送到已定义的进程。 Linux正在嵌入式系统上运行。

谢谢!

2 个答案:

答案 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

因此,如果只有一个行输出,则没有地址更改。