python处理ip/掩码生成起始IP和结束IP
ipv4:
1 import os 2 import ipaddress 3 4 def calculate_ip_range(ip,mask): 5 network = ipaddress.IPv4Network(f"{ip}/{mask}",strict=False) 6 start_ip=network[0] 7 end_ip=network[-1] 8 return start_ip,end_ip 9 10 #设置文件路径 11 #内容格式:127.0.0.1/20,每行一条 12 file_path="ipv4.txt" 13 with open(file_path,'r') as file: 14 for line in file: 15 line=line.strip() #去掉结尾换行符 16 ipsplit=line.split('/') 17 start_ip,end_ip=calculate_ip_range(ipsplit[0],ipsplit[1]) 18 print(f"原始内容:{line},起始IP:{start_ip},结束IP:{end_ip}")
ipv6:
import ipaddress # 创建一个IPv6Network对象 ip = "2001:db8::" mask = "64" # IPv6通常使用掩码长度,例如/64 network = ipaddress.IPv6Network(f"{ip}/{mask}", strict=False) # 获取网络地址(起始IP) start_ip = str(network.network_address) # 获取广播地址(对于IPv6通常是最后一个可分配的地址) end_ip = str(network.broadcast_address) # 注意:对于IPv6,通常没有广播地址的概念,我们使用最后一个可分配的地址作为结束IP last_usable_ip = str(network[-1]) # 获取最后一个可分配的IP地址作为结束IP print(f"起始IP: {start_ip}") print(f"结束IP: {last_usable_ip}") # 使用最后一个可分配的IP作为结束IP,而不是广播地址