我有日志数据,其中一列具有IP范围,下一列是相应的端口。例如:
IPRange Port
192.100.176.0-192.100.179.255 A, B, C
我需要将IPRange列扩展到网络块列表,直到第3个八位字节:
IPRange IP Port
192.100.176.0-192.100.179.255 192.100.176.0/24 A, B, C
192.100.176.0-192.100.179.255 192.100.177.0/24 A, B, C
192.100.176.0-192.100.179.255 192.100.178.0/24 A, B, C
192.100.176.0-192.100.179.255 192.100.179.0/24 A, B, C
我如何在R中实现这一目标?
答案 0 :(得分:0)
提交,
iptools
的共同作者,在这里。
您很幸运。好吧,实际上,您是靠自己的运气(按原样)通过GitHub(https://github.com/hrbrmstr/iptools)上的新编译器iptools
拥有了range_boundaries_to_cidr()
函数。相对于:
library(iptools)
range_boundaries_to_cidr(
ip_to_numeric("192.100.176.0"),
ip_to_numeric("192.100.179.255")
)
## [1] "192.100.176.0/22"
请注意,它需要数字输入,并且您在某些范围内不应真正期望仅返回单个CIDR 反向计算CIDR。例如:
range_boundaries_to_cidr(
ip_to_numeric("192.168.0.15"),
ip_to_numeric("192.168.5.115")
)
## [1] "192.168.0.15/32" "192.168.0.16/28" "192.168.0.32/27" "192.168.0.64/26"
## [5] "192.168.0.128/25" "192.168.1.0/24" "192.168.2.0/23" "192.168.4.0/24"
## [9] "192.168.5.0/26" "192.168.5.64/27" "192.168.5.96/28" "192.168.5.112/30"
您可以通过对在线转化器运行一些范围来验证我的说法,也可以在线研究“为什么”。
如果您对新功能有疑问,请在GH上删除一个问题,因为在此之前,我将首先从ping中查看
。