检测接口上的 IP 地址更改
Detect IP-Address change on an interface
我想在特定接口上的 IP 地址发生更改时触发服务。在 Linux(内核 3.19)上使用 systemd 是否有这个或我不知道的其他方法的目标?
该服务将用于向定义的进程发送 SIGNAL。 Linux 在嵌入式系统上是 运行。
谢谢!
Whosebug 的其他问题中有解决方案。就在这里:
Detecting a change of IP address in Linux
我喜欢这段代码,它很简单,你只需要一个频率为你需要的 cron 作业(我做了一点改动):
#!/bin/bash
OLD_IP=`cat ip.txt`
NEW_IP=`/sbin/ifconfig | awk -F "[: ]+'{ print }'`
if [ $NEW_IP != OLD_IP ]; then
YOU_COMMAND <commands>
echo $NEW_IP > ip.txt
fi
exit 0
因为您使用 Systemd you might already use systemd-networkd 来管理您的设备,而不是依赖第 3 方代码。
您可以使用结构化日志输出来获取当前 BOOD_ID 的最后 2 ADDRESS
字段。(遗憾的是,没有通知机制systemd-networkd 中的地址更改):
→ sudo journalctl -F ADDRESS -u systemd-networkd -n 2
192.168.178.29
因此,如果只有一行输出,则没有地址变化。
我想在特定接口上的 IP 地址发生更改时触发服务。在 Linux(内核 3.19)上使用 systemd 是否有这个或我不知道的其他方法的目标?
该服务将用于向定义的进程发送 SIGNAL。 Linux 在嵌入式系统上是 运行。
谢谢!
Whosebug 的其他问题中有解决方案。就在这里: Detecting a change of IP address in Linux
我喜欢这段代码,它很简单,你只需要一个频率为你需要的 cron 作业(我做了一点改动):
#!/bin/bash
OLD_IP=`cat ip.txt`
NEW_IP=`/sbin/ifconfig | awk -F "[: ]+'{ print }'`
if [ $NEW_IP != OLD_IP ]; then
YOU_COMMAND <commands>
echo $NEW_IP > ip.txt
fi
exit 0
因为您使用 Systemd you might already use systemd-networkd 来管理您的设备,而不是依赖第 3 方代码。
您可以使用结构化日志输出来获取当前 BOOD_ID 的最后 2 ADDRESS
字段。(遗憾的是,没有通知机制systemd-networkd 中的地址更改):
→ sudo journalctl -F ADDRESS -u systemd-networkd -n 2
192.168.178.29
因此,如果只有一行输出,则没有地址变化。