生成随机IPv6地址

时间:2014-01-09 10:00:04

标签: python random

在Python中,如果我想以IP v6地址的形式生成随机字符串,该怎么办?

例如:“ff80 :: 220:16ff:fec9:1”,“fe80 :: 232:50ff:fec0:5”,“fe20 :: 150:560f:fec4:3”等等。

有人可以给我一些帮助吗?

3 个答案:

答案 0 :(得分:3)

单线解决方案:

str(ipaddress.IPv6Address(random.randint(0, 2**128-1)))

或手工制作的地址(但是零的连续部分不会被双冒号替换):

':'.join('{:x}'.format(random.randint(0, 2**16 - 1)) for i in range(8))

答案 1 :(得分:2)

要生成随机十六进制字符,您可以使用:

random.choice('abcdef' + string.digits)

然后,它应该足够简单,以IPv6地址的形式生成您的字符串。

您还可以在此处找到有关随机字符串生成的更多信息:Random string generation with upper case letters and digits in Python

答案 2 :(得分:0)

根据需要调整功能,这是较旧的python 2.x;但大多数是本地库。

import random, struct, socket
from random import getrandbits

print socket.inet_ntop(socket.AF_INET6, struct.pack('>QQ', getrandbits(64), getrandbits(64)))