我在.txt文件中有一个很大的IP地址列表,包含和不包含子网。让我们称他们为“BadList”。
我在另一个.txt文件中有另一组IP地址(小得多),但它们没有子网。让我们称它们为“TestList”
我的目标是使用“测试列表”扫描“坏名单”并打印所有匹配的IP。如果最后有一个带有子网的IP,则打印IP地址及其所在的子网。
麻烦在于子网。我可以在列表中循环并找到匹配的单个IP地址,但是当涉及到子网时,我无法识别出来自Testlist.txt的X.X.X.X IP是从Badlist.txt的X.X.X.X / XX中找到的。它只是通过子网跳过IP。
我已经尝试了大量的代码变体,但这是一个例子。
import ipaddress
BadIPs = open("BadIPsWithandWithoutNets.txt", "r")
CheckIPs = open("IPsToCheck.txt", "r")
list1 = BadIPs.readlines()
list2 = CheckIPs.readlines()
for line1 in list1:
for line2 in list2:
line1 = line1.strip()
line2 = line2.strip():
if line2 == ipaddress.ip_network(line1)
print('Matched IP {0} in IP Net {1}'.format(line2,line1))
我正在扫描的错误IP列表示例。我的真实名单大约是500mil: BadIPs = [192.168.0.10,192.168.0.45,192.168.0.0/24]
谢谢!