python解析ip范围,拆分为所有ip数组

代码如下,还需结合一篇文章来看:ip范围格式转换

python 复制代码
#! -*- coding:utf-8 -*
"""
@desc: 解析ip范围为单ip列表
"""

import ipaddress


def ip_range_to_list(start_ip, end_ip):
    """
    处理有明确起始ip的数据(其他类型的,可将数据转换为这种格式再使用)
    格式如下:
    192.168.0.1-192.168.255.10
    # 下面的拆分转换方法,见上一篇文章
    192.168.*.1
    192.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_obj
    while current_ip <= end_ip_obj:
        ip_list.append(str(current_ip))
        current_ip += 1  # 递增一个IP地址

    return ip_list


def generate_ip_list_from_cidr(cidr):
    """
    处理带掩码的数据
    192.168.1.0/24
    :param cidr:
    :return:
    """
    # 解析CIDR,得到一个IPv4Network对象,使用strict=False来允许非网络地址的IP
    network = ipaddress.IPv4Network(cidr, strict=False)

    # 计算可用的主机地址范围,network.hosts()会返回一个生成器
    ip_list = []
    for host in network.hosts():
        ip_list.append(host)

    return ip_list


if __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))
相关推荐
测试员周周4 分钟前
【AI测试智能体】为什么传统测试方法对智能体失效?
开发语言·人工智能·python·功能测试·测试工具·单元测试·测试用例
dfdfadffa24 分钟前
如何用模块化方案组织一个可扩展的前端组件库项目
jvm·数据库·python
2301_8125396730 分钟前
SQL中如何高效实现分组数据的批量更新_利用窗口函数与JOIN
jvm·数据库·python
RSTJ_162535 分钟前
PYTHON+AI LLM DAY THREETY-NINE
开发语言·人工智能·python
2501_9012005337 分钟前
如何实现SQL存储过程存储过程参数标准化_统一命名规范
jvm·数据库·python
运气好好的1 小时前
Golang怎么用embed嵌入SQL文件_Golang如何将SQL迁移文件嵌入Go程序统一管理【技巧】
jvm·数据库·python
AC赳赳老秦1 小时前
政企内网落地:OpenClaw 离线环境深度适配方案,无外网场景下本地化模型对接与全功能使用
java·大数据·运维·python·自动化·deepseek·openclaw
赏金术士1 小时前
Kotlin 从入门到进阶 之函数模块(核心基础)(二)
android·开发语言·kotlin
星越华夏2 小时前
python 将相对路径变成绝对路径
python
l1t2 小时前
mingw和Linux中的gcc和llvm编译器编译的pocketpy执行同一个python脚本的不同效果
linux·运维·python