有没有人知道在Linux中检测IP地址变化的方法.假设我运行了dhcpcd,并且它分配了一个新的IP地址,有什么方法可以在它发生变化时收到通知吗?我不能使用D-Bus,因为这是一个没有它的嵌入式ucLinux构建.
inotify/proc/net /中的某些内容?
Mar*_*rkR 14
命令
ip monitor
Run Code Online (Sandbox Code Playgroud)
会告诉你这种事情正在发生.它使用了一些相当棘手且没有很好记录的netlink API(至少对人类来说是理解的).但是,它能够被内核通知各种事件,例如分配的IP的更改,路由表和链路状态(例如有人拔掉网络)
kma*_*imo 14
这是一个老问题,但我会回答那些将由谷歌到达的人(比如我自己).经过一段时间的努力,我发现你不一定需要为此调查或破解C解决方案.对于我的情况,我想在IP更改时更新我的家庭服务器(动态DNS)域.
如果你在跑dhcpcd
,你很幸运.dhcpcd
发生任何事情时都会运行钩子脚本.见man dhcpcd-run-hooks
(在线).基本上,您将需要修改或创建自己的dhcpcd.enter-hook
或dhcpcd.exit-hook
根据您要对事件提供的数据执行的操作.
由于 DHCP 活动会发送到 syslogd,因此您可以创建一个命名管道,将 syslog 流量定向到该管道并监视该流以获取 IP 地址更新。请参阅“man syslogd”和“man syslog.conf”。
编辑:另一种方法是使用 inotify 来监视接口的 DHCP 租用文件。在 Ubuntu 9.10 下,位于 /var/lib/dhcp3 目录中。
归档时间: |
|
查看次数: |
23151 次 |
最近记录: |