2016-06-14 88 views
0

我想在特定接口上发生IP地址更改时触发服务。有没有这样的目标或其他方法,我不知道用Linux上的systemd(内核3.19)来实现这个目标?检测接口上的IP地址更改

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

谢谢!

回答

1

因为你使用Systemd你可能已经使用systemd-networkd来管理您的设备,而不是依赖第三方代码。

您可以使用结构化日志输出来获得当前BOOD_ID的最后2 ADDRESS场(可悲的是,在systemd-networkd没有通知机制进行地址变更):

→ sudo journalctl -F ADDRESS -u systemd-networkd -n 2 
192.168.178.29 

所以,如果只有一行输出,没有地址改变。

+0

不完全是我在找的东西,但我可以用它工作,谢谢! – user3482407

+0

顺便说一句,你怎么知道ADDRESS字段的名称?我无法在任何地方的文档中找到它... – user3482407

+1

我用'sudo journalctl -u systemd-networkd -o json-pretty'来检查该服务的日志输出。 –

1

在StackOverflow的其他问题中有一个解决方案。就在这里: Detecting a change of IP address in Linux

我喜欢这样的代码,很容易,你在线订购需要frecuency一个cron作业,因为你需要(我做了一个小的变化):

#!/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