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'))