Python 计算两个IP段之间的有效IP地址
Can anyone think of an algorithm to put all of the addresses between two others and put them in a list (using python)? For example:
findIPs('111.111.111.0', '111.111.111.3')
Should return
('111.111.111.0', '111.111.111.1', '111.111.111.2', '111.111.111.3')
. My main problem arises from when corresponding blocks are identical otherwise I could just use nested for loops with the range function
方法一:
try: from ipaddress import ip_address except ImportError: from ipaddr import IPAddress as ip_address def findIPs(start, end): start = ip_address(start) end = ip_address(end) result = [] while start <= end: result.append(str(start)) start += 1 return result print(findIPs('111.111.111.0', '111.111.111.3'))
打印结果:
方法二:
import struct import socket def findIPs(start, end): ipstruct = struct.Struct('>I') start, = ipstruct.unpack(socket.inet_aton(start)) end, = ipstruct.unpack(socket.inet_aton(end)) return [socket.inet_ntoa(ipstruct.pack(i)) for i in range(start, end+1)] print(findIPs('111.111.111.0', '111.111.111.3'))
原文地址:https://stackoverflow.com/questions/17220308/how-to-find-all-ip-addresses-between-2-ip-addresses
*********************
交流即分享,分享才能进步!
不对之处,还请各位前辈多多指教。
by 星云
********************