我的文字包含IP和子网数据。我需要输出给定范围内的每个IP。输入如下所示:
10.14.21.23 0.0.0.0
20.54.0.0 0.0.127.255
30.76.21.0 0.0.0.255
40.24.21.135 0.0.0.0
,输出需要如下所示:
10.14.21.23
20.54.0.1
20.54.0.2
20.54.0.3
20.54.0.4
...
20.54.127.254
30.76.21.1
30.76.21.2
30.76.21.3
30.76.21.4
...
30.76.21.254
40.24.21.135
我已将IP隔离开来:
for line in file.readlines():
if re.findall(r'\d+\.\d+\.\d+\.\d+?', line):
tuples = re.findall(r'\d+\.\d+\.\d+\.\d+', line)
这会将IP和子网置于元组[0]和元组[1]中。这是处理这些数据的最佳方法吗?如何计算给定范围内的每个IP?
提前致谢。
答案 0 :(得分:3)
您可以使用ipcalc:
#!/usr/bin/python
import ipcalc
import sys
for data in sys.argv[1:]:
with open(data) as data:
for data in data:
data = data.split()
# Convert subnet mask to count
data[1] = ipcalc.IP(data[1]).bin().count('0')
data = ipcalc.Network(*data)
data = list(data)
if len(data) == 1:
print data[0]
else:
for data in data[1:-1]:
print data
价: