微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何自动通知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)的手册页。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐