在Python中生成随机IP地址可以通过以下步骤实现:
1. 定义一个包含IP地址池的列表,每个IP地址后面跟有CIDR表示法的前缀长度。
2. 从IP地址池中随机选择一个IP地址。
3. 将选定的IP地址分解为网络地址和子网掩码。
4. 根据子网掩码生成一个随机的子网地址。
5. 将网络地址和随机子网地址组合成最终的随机IP地址。
import random
import socket
import struct
定义IP地址池
RANDOM_IP_POOL = [
'192.168.10.222/0',
可以添加更多IP地址和前缀长度
]
def get_random_ip():
从IP地址池中随机选择一个IP地址
str_ip = RANDOM_IP_POOL[random.randint(0, len(RANDOM_IP_POOL) - 1)]
分解IP地址和前缀长度
str_ip_addr, str_ip_mask = str_ip.split('/')
将IP地址转换为整数形式
ip_addr = struct.unpack('>I', socket.inet_aton(str_ip_addr))
初始化子网掩码
mask = 0x0
根据前缀长度生成子网掩码
for i in range(31, 31 - int(str_ip_mask), -1):
mask = mask | (1 << i)
生成随机子网地址
random_ip_int = random.randint(ip_addr & mask, ip_addr | ~mask)
将随机子网地址转换回IP地址格式
random_ip_addr = socket.inet_ntoa(struct.pack('>I', random_ip_int))
返回随机IP地址
return f"{random_ip_addr}/{str_ip_mask}"
生成随机IP地址并打印
print(get_random_ip())
请注意,这个代码示例仅适用于IPv4地址。如果你需要生成IPv6地址,你需要使用不同的数据结构和函数。