生成随机ip



我对python很陌生,这可能是一个简单的答案,但我如何使用ipaddress module从0.0.0.0/0生成随机ip。

main.py

import ipaddress
def ipv4():
net4 = ipaddress.ip_network('0.0.0.0/0')
for ips in net4:
ipv4()

电流输出

0.0.149.149
0.0.149.150
0.0.149.151
0.0.149.152

预期输出

193.189.190.7
154.195.199.61
199.231.163.232
179.112.190.133
188.120.233.146

下面的怎么样?

import ipaddress
import random
import sys
print(str(ipaddress.IPv4Address(random.randint(0,2 ** 32))))

一种可能的解决方案:

import random
MAX_IPV4 = ipaddress.IPv4Address._ALL_ONES  # 2 ** 32 - 1
MAX_IPV6 = ipaddress.IPv6Address._ALL_ONES  # 2 ** 128 - 1

def random_ipv4():
return  ipaddress.IPv4Address._string_from_ip_int(
random.randint(0, MAX_IPV4)
)
def random_ipv6():
return ipaddress.IPv6Address._string_from_ip_int(
random.randint(0, MAX_IPV6)
)

示例:

>>> random.seed(444)                                                                                                                                                                                                                                         
>>> random_ipv4()                                                                                                                                                                                                                                            
'79.19.184.109'
>>> random_ipv4()                                                                                                                                                                                                                                            
'3.99.136.189'
>>> random_ipv4()                                                                                                                                                                                                                                            
'124.4.25.53'
>>> random_ipv6()                                                                                                                                                                                                                                            
'4fb7:270d:8ba9:c1ed:7124:317:e6be:81f2'
>>> random_ipv6()                                                                                                                                                                                                                                            
'fe02:b348:9465:dc65:6998:6627:1300:29c9'
>>> random_ipv6()                                                                                                                                                                                                                                            
'74a:dd88:1ff2:bfe3:1f3:81ad:debd:db88'

如果ipaddress是可选的,则可以使用此

>>> import random
>>> import socket
>>> import struct
>>> socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
'197.38.59.143'
>>> socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
'228.237.175.64'

如果你想要多个IP,把它放在这样的循环中,

for _ in range(10):
print(socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff))))

输出:

151.166.184.41
237.59.227.33
249.179.144.26
248.151.116.150
94.186.44.162
251.238.134.106
5.239.51.182
198.1.81.192
24.116.237.239
187.8.43.55

此代码适用于C类IP地址:

#Class C IP address range 192.168.0.0 - 192.168.255.255
import ipaddress
import random
def ipv4(no_ips):
for i in range(1,no_ips):        
netwrk_id = random.choice(range(0,255))
host_id = random.choice(range(0,255))
ip_address_gen = f'192.i68.{netwrk_id}.{host_id}'
print(ip_address_gen)
ipv4(20) #this generates 20 Class C IP addresses

在这里,我导入了random模块,并使用它生成0和网络ID/主机ID限制(即255(之间的随机整数。然后将192.168(就像C类地址的情况一样(添加到生成的值中。在调用ipv4函数时,只需将要生成的IP地址数作为参数传递即可。您可以将此代码扩展到B类IP地址,在这种情况下,您将生成三组不同的整数,因为B类范围如下:172.16.0.0-172.31.255.255

这是@balderman建议的代码的略微改进版本。

生成有效的随机IP地址:

import ipaddress 
import random
def get_random_ip():
"""Generate a random IP Address
Returns:
string: IP Address
"""
randomIPAddress = str(ipaddress.IPv4Address(random.randint(0, 2 ** 32)))
isPrivateIp = ipaddress.ip_address(randomIPAddress).is_private
if isPrivateIp:
return get_random_ip()
return randomIPAddress

最新更新