Делает любой знает способ обнаружить изменение IP-адреса в Linux. Скажите, что у меня есть выполнение dhcpcd, и оно присваивает новый IP-адрес, есть ли способ, которым я могу получить уведомление, когда оно изменяется? Я не могу использовать D-шину, потому что это - встроенная сборка ucLinux, которая не имеет ее.
inotify на чем-то в/proc/net/?
Поскольку активность DHCP отправляется в syslogd, вы можете создать именованный канал, направлять на него трафик системного журнала и следить за потоком обновлений IP-адресов. См. "Man syslogd" и "man syslog.conf".
Edit: Другой подход - использовать inotify для отслеживания файла аренды DHCP для интерфейса. В Ubuntu 9.10 он находится в каталоге / var / lib / dhcp3.
Я думаю, что вы можете использовать dbus для этого в современных дистрибутивах Linux. Если в вашем дистрибутиве используется NetworkManager, см. Этот документ для получения информации о его интерфейсе dbus:
http://people.redhat.com/dcbw/NetworkManager/NetworkManager%20DBUS%20API.txt
Команда
ip monitor
покажет вам, что происходит. Он использует некоторый API-интерфейс netlink, который довольно сложен и плохо документирован (по крайней мере, для понимания людьми). Однако ядро может получать уведомления о различных событиях, таких как изменение назначенных IP-адресов, таблиц маршрутизации и статуса канала (например, кто-то отключил сеть)