Advertisement
Guest User

IP within (more) ranges

a guest
Feb 21st, 2019
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.36 KB | None | 0 0
  1. def convert_ip_to_int(ip):
  2.     return sum(int(octet) * 256**(3-i) for i, octet in enumerate(ip.split('.')))
  3.  
  4.  
  5. def ip_in_range(ip, all_ranges):
  6.     as_integer = convert_ip_to_int(ip)
  7.     return list(filter(lambda r: as_integer in r[1], all_ranges))
  8.  
  9.  
  10. pairs = [
  11.     "10.39.116.1 - 10.39.116.254",
  12.     "10.40.116.1 - 10.40.116.254",
  13.     "10.41.116.1 - 10.41.116.254",
  14.     "10.103.20.1 - 10.103.20.254",
  15.     "10.103.21.1 - 10.103.21.254",
  16.     "10.103.71.1 - 10.103.71.254",
  17.     "10.103.72.1 - 10.103.72.254",
  18.     "10.189.20.1 - 10.189.20.254",
  19.     "10.189.21.1 - 10.189.21.254",
  20.     "10.189.71.1 - 10.189.71.254",
  21.     "10.189.72.1 - 10.189.72.254",
  22.     "10.253.16.1 - 10.253.16.254",
  23.     "10.253.18.1 - 10.253.18.254",
  24.     "10.253.19.1 - 10.253.19.254",
  25.     "10.253.20.1 - 10.253.20.254",
  26.     "131.199.27.1 - 131.199.27.254",
  27.     "192.168.1.10"
  28. ]
  29.  
  30. ranges = []
  31. for pair in pairs:
  32.     split = pair.split(' - ')
  33.     if len(split) == 1:
  34.         split.append(split[0])
  35.     minimum, maximum = map(convert_ip_to_int, split)
  36.     ranges.append((pair, range(minimum, maximum+1)))
  37.  
  38. in_range = "10.253.18.50"
  39. print(f'{in_range} in range: {ip_in_range(in_range, ranges)}')
  40.  
  41. not_in_range = "192.168.1.1"
  42. print(f'{not_in_range} in range: {ip_in_range(not_in_range, ranges)}')
  43.  
  44. single = "192.168.1.10"
  45. print(f'{single} in range: {ip_in_range(single, ranges)}')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement