代码如下,还需结合一篇文章来看:ip范围格式转换
#! -*- coding:utf-8 -*
"""
@desc: 解析ip范围为单ip列表
"""import ipaddressdef ip_range_to_list(start_ip, end_ip):"""处理有明确起始ip的数据(其他类型的,可将数据转换为这种格式再使用)格式如下:192.168.0.1-192.168.255.10# 下面的拆分转换方法,见上一篇文章192.168.*.1192.168-169.*.*10.1.1.1-10:param start_ip::param end_ip::return:"""# 创建起始和结束IP地址对象start_ip_obj = ipaddress.IPv4Address(start_ip)end_ip_obj = ipaddress.IPv4Address(end_ip)# 初始化一个空列表来存储所有的IP地址ip_list = []# 遍历范围内的所有IP地址current_ip = start_ip_objwhile current_ip <= end_ip_obj:ip_list.append(str(current_ip))current_ip += 1 # 递增一个IP地址return ip_listdef generate_ip_list_from_cidr(cidr):"""处理带掩码的数据192.168.1.0/24:param cidr::return:"""# 解析CIDR,得到一个IPv4Network对象,使用strict=False来允许非网络地址的IPnetwork = ipaddress.IPv4Network(cidr, strict=False)# 计算可用的主机地址范围,network.hosts()会返回一个生成器ip_list = []for host in network.hosts():ip_list.append(host)return ip_listif __name__ == '__main__':# 示例使用start_ip = "192.168.0.1"end_ip = "192.168.255.10"ip_list = ip_range_to_list(start_ip, end_ip)# 打印结果print(len(ip_list))# 定义CIDR表示的子网cidr = "192.168.1.0/23"# 调用函数并打印结果ip_addresses = generate_ip_list_from_cidr(cidr)print(len(ip_addresses))