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))
相关推荐
Lupino2 小时前
别再只聊 AI 写代码了:技术负责人要把“变更治理”提到第一优先级
python·docker·容器
Flittly3 小时前
【从零手写 ClaudeCode:learn-claude-code 项目实战笔记】(6)Context Compact (上下文压缩)
python·agent
曲幽14 小时前
FastAPI + PostgreSQL 实战:从入门到不踩坑,一次讲透
python·sql·postgresql·fastapi·web·postgres·db·asyncpg
用户83562907805119 小时前
使用 C# 在 Excel 中创建数据透视表
后端·python
码路飞21 小时前
FastMCP 实战:一个 .py 文件,给 Claude Code 装上 3 个超实用工具
python·ai编程·mcp
dev派1 天前
AI Agent 系统中的常用 Workflow 模式(2) Evaluator-Optimizer模式
python·langchain
前端付豪1 天前
AI 数学辅导老师项目构想和初始化
前端·后端·python
用户0332126663671 天前
将 PDF 文档转换为图片【Python 教程】
python
悟空爬虫1 天前
UV实战教程,我啥要从Anaconda切换到uv来管理包?
python
dev派1 天前
AI Agent 系统中的常用 Workflow 模式(1)
python·langchain