我希望能够在python中使用netaddr获取ip过滤器,但我不知道如何在CIDR范围内减去两个ips来创建。相反,我得到两个不同的范围。
from netaddr import *
allnets = IPSet(['0.0.0.0/0'])
ip = IPSet(['8.8.8.8', '8.8.8.4'])
for ips in ip:
print allnets - ip
我想获得一个过滤两个ip的IPset对象,而不是过滤每个ip的两组范围。
答案 0 :(得分:2)
您要搜索的表达式为allnets - ip
。这产生了一个过滤两个ips"。
考虑这个程序:
from netaddr import *
allnets = IPSet(['0.0.0.0/0'])
ip = IPSet(['8.8.8.8', '8.8.8.4'])
filtered = allnets - ip
assert '8.8.8.8' not in filtered
assert '8.8.8.4' not in filtered
assert '8.8.8.7' in filtered
assert '192.0.2.17' in filtered
assert '203.0.113.1' in filtered