Advertisement
Guest User

Untitled

a guest
Mar 24th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.02 KB | None | 0 0
  1. import math
  2.  
  3. def ip_to_integer(ip):
  4. int_ip = []
  5. for s in ip.split("."):
  6. int_ip.append(int(s))
  7. first_oktett = int_ip[0] << 24
  8. second_oktett = int_ip[1] << 16
  9. third_oktett = int_ip[2] << 8
  10. fourth_oktett = int_ip[3]
  11. return first_oktett + second_oktett + third_oktett + fourth_oktett
  12.  
  13.  
  14. def integer_to_ip(ip):
  15. first_oktett = (ip & 0xFF000000) >> 24
  16. second_oktett = (ip & 0x00FF0000) >> 16
  17. third_oktett = (ip & 0x0000FF00) >> 8
  18. fourth_oktett = ip & 0x000000FF
  19. return (str(first_oktett) + "." + str(second_oktett) + "." + str(third_oktett) + "." + str(fourth_oktett))
  20.  
  21.  
  22. def create_subnet(netmask, subnets):
  23. inverted_netmask = 0xFFFFFFFF ^ ip_to_integer(netmask)
  24. additionally_required_bits = (inverted_netmask + 1) / subnets
  25. log2_bits = math.ceil(math.log2(additionally_required_bits))
  26. subnetmask = ip_to_integer(netmask) | (inverted_netmask << log2_bits)
  27. return subnetmask
  28.  
  29.  
  30. def ip_calculator(ip, netmask, subnets):
  31. list_of_ips = []
  32. nummber_of_hosts = 0xFFFFFFFF - create_subnet(user_netmask, user_subnets) + 1
  33. int_user_ip = ip_to_integer(ip)
  34. for i in range(0, subnets):
  35. list_of_ips.append((int_user_ip, int_user_ip + 1, int_user_ip + nummber_of_hosts - 2, int_user_ip + nummber_of_hosts - 1))
  36. int_user_ip += nummber_of_hosts
  37. return list_of_ips
  38.  
  39.  
  40. user_ip = "192.168.168.0" #input("Please enter ip: ")
  41. user_netmask = "255.255.255.0" #input("Please enter netmask: ")
  42. user_subnets = 2 #int(input("Please enter number of required subnets: "))
  43.  
  44.  
  45. print("ip : %s" % (user_ip))
  46. print("netmask : %s" % (user_netmask))
  47. print("subnets : %s" % (user_subnets))
  48. print("subnetmask: %s" % (integer_to_ip(create_subnet(user_netmask, user_subnets))))
  49. print()
  50.  
  51. print("%s %20s %20s %20s" % ("subnet", "ip start", "- ip end", "broadcast"))
  52. for ips in ip_calculator(user_ip, user_netmask, user_subnets):
  53. print("%s %18s %21s %19s" % (integer_to_ip(ips[0]), integer_to_ip(ips[1]),integer_to_ip(ips[2]),integer_to_ip(ips[3])))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement