如何自动通知IP地址更改

在linux中有任何方法,如callback或信号,以获得通知,只要有IP地址的任何变化。 我想用内核注册一个callback,或者从内核获取一个信号,而这个信号是自动完成的,而不是我的代码轮询在套接字上。

提前致谢。

如何从linux中的文本文件获取价值

如果ASLR被禁用,mmap是确定性的吗?

Linux Hudson,Windows版本

安装后无法访问PHPmyadmin

我可以发送信号到不同的线程

您通过netlink套接字接收来自内核的通知

您需要创建一个NETLINK_ROUTE套接字,并通过bind()到RTMGRP_IPV4_IFADDR组来将其订阅到IP更改。 然后,您将收到路由属性为IFA_LOCAL或IFA_ADDRESS RTM_NEWADDR和RTM_DELADDR类型的netlink消息。

没有C编程:命令

$ ip monitor

只要IP子系统中的某些配置发生变化,就会在其stdout上产生输出。 命令

# ip addr add 10.10.10.10/24 dev em1

产生以下输出

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

用命令删除10.10.10.10地址

# ip addr del 10.10.10.10/24 dev em1

产生以下输出

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

你可以使用shell和一些awk或perl来处理这些消息,或者你可以使用popen()和朋友的C库函数,并在C中处理outpout。

使用C编程,您可以通过NETLINK连接到内核。 这是相当复杂的,没有很好的记录。 看到这个维基百科文章的起点到Netlink接口。

你可以产生“/ sbin / ip monitor”作为子进程并观察它的输出

它会告诉你什么时候IP地址发生变化等。更多细节请参见ip(8)的手册页。

相关文章

可以认为OpenFeign是Feign的增强版,不同的是OpenFeign支持S...
为进一步规范小程序交易生态、提升用户购物体验、满足用户在...
云原生之使用Docker部署Dashdot服务器仪表盘
本文主要描述TensorFlow之回归模型的基本原理
1.漏洞描述Apache Druid 是一个集时间序列数据库、数据仓库和...
内部类(当作类中的一个普通成员变量,只不过此成员变量是cl...