-2

How can I make the script below generate 1 IPv6 address from each one of the subnets listed?

#!/usr/bin/env python3
"""
Generate a random IPv6 address for each of the specified subnets
"""

from random import seed, getrandbits
from ipaddress import IPv6Network, IPv6Address

subnet = u'2001:db8:100::/64'
subnet = u'2001:e85:100::/64'
subnet = u'2001:45a:100::/64'

seed()
network = IPv6Network(subnet)
address = IPv6Address(network.network_address + getrandbits(network.max_prefixlen - network.prefixlen))

print(address)

Potentially, I'd like to be able to list many different IPv6 subnets.

Conserta
  • 99
  • 1
  • 2
  • 12
  • Possible duplicate of [Generate random IPv6 address](https://stackoverflow.com/questions/21016918/generate-random-ipv6-address) – Adam Jaamour Sep 05 '17 at 09:01

2 Answers2

1
def generate(subnet):
    network = IPv6Network(subnet)
    address = IPv6Address(network.network_address + getrandbits(network.max_prefixlen - network.prefixlen))
    return address

print(generate(u'2001:db8:100::/64'))
print(generate(u'2001:e85:100::/64'))
print(generate(u'2001:45a:100::/64'))
Alex Hall
  • 34,833
  • 5
  • 57
  • 89
0

Thank you Alex.

#!/usr/bin/env python3
"""
Generate a random IPv6 address for each of the specified subnets
"""

from random import seed, getrandbits
from ipaddress import IPv6Network, IPv6Address

subnet = u'2001:db8:100::/64'
subnet = u'2001:e85:100::/64'
subnet = u'2001:45a:100::/64'

def generate(subnet):
    network = IPv6Network(subnet)
    address = IPv6Address(network.network_address + getrandbits(network.max_prefixlen - network.prefixlen))
    return address

print(generate(u'2001:db8:100::/64'))
print(generate(u'2001:e85:100::/64'))
print(generate(u'2001:45a:100::/64'))
Conserta
  • 99
  • 1
  • 2
  • 12