当前位置: 代码迷 >> python >> 从python中的文本输出扩展的ip列表
  详细解决方案

从python中的文本输出扩展的ip列表

热度:71   发布时间:2023-07-14 08:59:11.0

我有包含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?

提前致谢。

你可以使用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

参考: