Sin programación C: el comando
$ ip monitor
produce una salida en su salida estándar, cada vez que alguna configuración en los cambios en los subsistemas IP. El comando
# ip addr add 10.10.10.10/24 dev em1
produce la siguiente salida
2: em1 inet 10.10.10.10/24 scope global em1
local 10.10.10.10 dev em1 table local proto kernel scope host src 0.10.10.10
10.10.10.0/24 dev em1 proto kernel scope link src 10.10.10.10
broadcast 10.10.10.0 dev em1 table local proto kernel scope link src 10.10.10.10
broadcast 10.10.10.255 dev em1 table local proto kernel scope link src 10.10.10.10
la supresión de la addresss 10.10.10.10 con el comando
# ip addr del 10.10.10.10/24 dev em1
produce la siguiente salida
Deleted 2: em1 inet 10.10.10.10/24 scope global em1
Deleted 10.10.10.0/24 dev em1 proto kernel scope link src 10.10.10.10
Deleted broadcast 10.10.10.255 dev em1 table local proto kernel scope link src 10.10.10.10
Deleted broadcast 10.10.10.0 dev em1 table local proto kernel scope link src 10.10.10.10
Deleted local 10.10.10.10 dev em1 table local proto kernel scope host src 10.10.10.10
puede utilizar eito ella el intérprete de órdenes y algunos awk o perl para procesar estos mensajes, o puede usar las funciones de biblioteca popen() y amigos C y procesar el outpout en C.
Usando la programación C puede enganchar en el kernel a través de NETLINK. Esto es bastante complicado y no está muy bien documentado. Consulte este Wikipedia article para obtener un punto de partida en la interfaz de Netlink.
Me gustaría ver 'udev' –
udev realmente no se preocupa por eso. –