在Python,我应该怎么做,如果我想将产生的IP V6地址的形式随机字符串?
例如: “FF80 :: 220:16ff:fec9:1”, “FE80 :: 232:50FF:FEC0:5”, “FE20 :: 150:560F:fec4:3” 等。
可能有人给我一些帮助吗?
在Python,我应该怎么做,如果我想将产生的IP V6地址的形式随机字符串?
例如: “FF80 :: 220:16ff:fec9:1”, “FE80 :: 232:50FF:FEC0:5”, “FE20 :: 150:560F:fec4:3” 等。
可能有人给我一些帮助吗?
一号线的解决方案:
str(ipaddress.IPv6Address(random.randint(0, 2**128-1)))
或手工地址(但零的连续区段不与双冒号代替):
':'.join('{:x}'.format(random.randint(0, 2**16 - 1)) for i in range(8))
要生成一个随机的十六进制字符,你可以这样做:
random.choice('abcdef' + string.digits)
然后,它应该足够简单,生成您在IPv6地址的格式字符串。
您还可以找到有关随机串生成这里更多的信息: 随机串生成用大写字母和数字在Python
调节功能可以根据需要,这是老的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)))