WIP ipv6 #2
This commit is contained in:
parent
42652fafaf
commit
60bb4ab0b2
1 changed files with 54 additions and 0 deletions
54
pedro/ipv6-stuff/randomnet.py
Normal file
54
pedro/ipv6-stuff/randomnet.py
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
import ipaddress
|
||||||
|
import argparse
|
||||||
|
# for exit codes
|
||||||
|
import sys
|
||||||
|
|
||||||
|
# this is useful for debugging (put it in the line you want to inspect)
|
||||||
|
# import IPython; IPython.embed()
|
||||||
|
|
||||||
|
def proc_args():
|
||||||
|
# src https://docs.python.org/3/library/argparse.html#description
|
||||||
|
parser = argparse.ArgumentParser(description='Generate a random IPv6 network that is subnetwork from the the input network. Optional parameter allows you to specify the size of the subnetwork')
|
||||||
|
parser.add_argument('prefix', type=str,
|
||||||
|
help='IPv6 network')
|
||||||
|
parser.add_argument('--size', type=int,
|
||||||
|
help='prefix of the output IPv6 subnetwork')
|
||||||
|
args = parser.parse_args()
|
||||||
|
return args
|
||||||
|
|
||||||
|
def proc_input(args):
|
||||||
|
prefix = args.prefix
|
||||||
|
try:
|
||||||
|
net6 = ipaddress.IPv6Network(prefix)
|
||||||
|
except:
|
||||||
|
print('input is not IPv6 network or is not in CIDR format')
|
||||||
|
sys.exit(1)
|
||||||
|
if(net6.prefixlen > 48):
|
||||||
|
print('The netmask of the prefix should be /48 or smaller (/48.../0)')
|
||||||
|
sys.exit(1)
|
||||||
|
if args.size:
|
||||||
|
if(args.size < 48):
|
||||||
|
print('Prefix subnet size should be greater or equal than 48')
|
||||||
|
sys.exit(1)
|
||||||
|
size = args.size
|
||||||
|
else:
|
||||||
|
size = 48
|
||||||
|
if net6.prefixlen = size:
|
||||||
|
print('the input subnet cannot be equal to the output subnet')
|
||||||
|
sys.exit(1)
|
||||||
|
return net6, size
|
||||||
|
|
||||||
|
def main():
|
||||||
|
|
||||||
|
args = proc_args()
|
||||||
|
|
||||||
|
net6, size = proc_input(args)
|
||||||
|
import IPython; IPython.embed()
|
||||||
|
|
||||||
|
# generate random subnet
|
||||||
|
net6.subnets(new_prefix=size)
|
||||||
|
|
||||||
|
print(subprefix)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
Loading…
Reference in a new issue