Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import math
- def ip_to_integer(ip):
- int_ip = []
- for s in ip.split("."):
- int_ip.append(int(s))
- first_oktett = int_ip[0] << 24
- second_oktett = int_ip[1] << 16
- third_oktett = int_ip[2] << 8
- fourth_oktett = int_ip[3]
- return first_oktett + second_oktett + third_oktett + fourth_oktett
- def integer_to_ip(ip):
- first_oktett = (ip & 0xFF000000) >> 24
- second_oktett = (ip & 0x00FF0000) >> 16
- third_oktett = (ip & 0x0000FF00) >> 8
- fourth_oktett = ip & 0x000000FF
- return (str(first_oktett) + "." + str(second_oktett) + "." + str(third_oktett) + "." + str(fourth_oktett))
- def create_subnet(netmask, subnets):
- inverted_netmask = 0xFFFFFFFF ^ ip_to_integer(netmask)
- additionally_required_bits = (inverted_netmask + 1) / subnets
- log2_bits = math.ceil(math.log2(additionally_required_bits))
- subnetmask = ip_to_integer(netmask) | (inverted_netmask << log2_bits)
- return subnetmask
- def ip_calculator(ip, netmask, subnets):
- list_of_ips = []
- nummber_of_hosts = 0xFFFFFFFF - create_subnet(user_netmask, user_subnets) + 1
- int_user_ip = ip_to_integer(ip)
- for i in range(0, subnets):
- 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))
- int_user_ip += nummber_of_hosts
- return list_of_ips
- user_ip = "192.168.168.0" #input("Please enter ip: ")
- user_netmask = "255.255.255.0" #input("Please enter netmask: ")
- user_subnets = 2 #int(input("Please enter number of required subnets: "))
- print("ip : %s" % (user_ip))
- print("netmask : %s" % (user_netmask))
- print("subnets : %s" % (user_subnets))
- print("subnetmask: %s" % (integer_to_ip(create_subnet(user_netmask, user_subnets))))
- print()
- print("%s %20s %20s %20s" % ("subnet", "ip start", "- ip end", "broadcast"))
- for ips in ip_calculator(user_ip, user_netmask, user_subnets):
- 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