Python 分解IP段获取所有IP(子网掩码)

需求

192.168.1.0/24,192.168.2.1-192.168.2.254,192.168.3.3

IP段格式已 "," 分割,获取所有IP

注意

1. 判断 IP 是否合规

2. 去除多余的字符,例如空格、换行符

3. 去重

代码

import re
import ipaddressdef isIP(ip):p = re.compile('^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$')if p.match(ip):return Trueelse:return Falsedef get_ip_last(ip):parts = ip.split(".")last_octet = int(parts[3])return last_octetdef range_to_ips(mask):try:ip_list = []ips = mask.split("-", 1)start_ip = ips[0]end_ip = ips[1]last_octet = get_ip_last(start_ip)if last_octet <= 0 or last_octet >= 255:return Falselast_octet = get_ip_last(end_ip)if last_octet <= 0 or last_octet >= 255:return Falsestart = ipaddress.IPv4Address(start_ip)end = ipaddress.IPv4Address(end_ip)for ip in range(int(start), int(end) + 1):ip_tmp = ipaddress.IPv4Address(ip)ip_list.append(str(ip_tmp))except Exception as e:return Falsereturn ip_listdef ip_segment_to_ips(ip_segment):ip_list = []ip_segment = ip_segment.strip()ip_tmp = ip_segment.split(",")for ip_range in ip_tmp:if "/" in ip_range:ips = mask_to_ips(ip_range)if not ips:return Falseelse:ip_list.extend(ips)elif "-" in ip_range:ips = range_to_ips(ip_range)if not ips:return Falseelse:ip_list.extend(ips)elif isIP(ip_range):ip_list.append(ip_range)else:passip_list = list(set(ip_list))print(ip_list, len(ip_list))return ip_listif __name__ == '__main__':ip_segment = "192.168.1.0/24,192.168.2.1-192.168.2.254,192.168.3.3"print(ip_segment_to_ips(ip_segment))

执行结果

list中

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/181052.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JS调用Android原生相机设置

1、定义 private ValueCallback<Uri> mUploadMessage;public ValueCallback<Uri[]> uploadMessage;private Uri imageUri; 2、webview 设置 webView.setWebChromeClient(new WebChromeClient(){// For 3.0 Devices (Start)// onActivityResult attached before co…

谷歌要如何优化引流?谷歌引流有什么优势?

在谷歌引流上想要写出高质量的内容是不言而喻的&#xff0c;但如果你希望为关键字排名&#xff0c;那么写高质量的内容是很重要的。如果没有人发现你的内容有用&#xff0c;那么世界上所有的页面优化都不会对你有帮助。谷歌有很多排名因素&#xff0c;可以帮助他们决定你的页面…

考虑区域多能源系统集群协同优化的联合需求侧响应模型程序代码!

本程序参考中国电机工程学报论文《考虑区域多能源系统集群协同优化的联合需求侧响应模型》&#xff0c;文章使用关系矩阵来表示电、热、气的耦合关系&#xff0c;使用NSGA2方法对多目标优化方法进行求解&#xff0c;文章中考虑环境因素是目前研究的热点。程序中算例丰富&#x…

对支付宝进行测试用例分析

支付宝作为一款广泛使用的支付工具&#xff0c;其功能和性能的稳定性和可靠性对于用户体验至关重要。因此&#xff0c;对其进行测试用例分析是非常必要的。以下是一些可能的测试用例&#xff1a; 功能测试&#xff1a;测试支付宝各项功能的完整性和正确性&#xff0c;例如转账、…

LINUX入门篇【11】---进程篇【3】---进程优先级,进程切换,进程调度

前言&#xff1a; 有了前面知识点的铺垫&#xff0c;本篇我们将围绕进程的三个方面来展开&#xff0c;即进程优先级&#xff0c;进程切换以及进程调度的问题&#xff0c;这里的进程调度其实本质就是CPU是如何去调度进程的。 进程优先级&#xff1a; 优先级的概念&#xff1a…

[Linux ] sed文本处理和免交互

一、sed 1.1 sed是什么 sed 是一种流编辑器&#xff08;stream editor&#xff09;&#xff0c;用于对文本数据进行文本转换和处理。它通常被用于在命令行中执行文本编辑任务&#xff0c;可以对输入的文本进行搜索、替换、删除等操作&#xff0c;并将结果输出。sed 是一个非交…

maven repository的官方网址

1.maven仓库官方地址&#xff1a; https://mvnrepository.com/

[个人笔记] VMware vCenter的CLI笔录

VMware虚拟化 - CLI笔录 VMware vCenter的CLI笔录 VMware虚拟化 - CLI笔录VMware vCenter的CLI笔录vCenter 6.7 Shell service-control服务管理的CLIvCenter 6.7 上传文件到ShellvCenter 6.7 Shell iptables防火墙管理vCenter 6.7 Shell 替换计算机SSL证书全流程other cli VMwa…

mgmt接口调用

mgmt接口调用 在bluetoothd启动是&#xff0c;会进行初始化&#xff0c;在这里会获取mgmt句柄来进行和内核之间的通信 8677 int adapter_init(void) 8678 { 8679 dbus_conn btd_get_dbus_connection();/*获取dbus连接后的句柄*/ 8680 /*获取mgmt句柄&#xff0c;用于…

10.点赞 + 我收到的赞

1.点赞 点赞&#xff1a;支持对帖子、评论点赞&#xff1b;第1次点赞&#xff0c;第2次取消点赞首页点赞数量&#xff1a;统计帖子的点赞数量详情页点赞数量&#xff1a;统计点赞数量、显示点赞状态 1.1 生成 redis 工具类 将数据存入到 redis 中&#xff0c;以 key 为关键&…

Spring Boot 整合RabbitMQ

系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Sprin…

Nginx访问控制

Nginx的location块用于基于接收到的请求字符串(例如:www.test.com/uri-string)对虚拟主机之外的部分进行匹配,并对特定的请求进行处理。它可以用于地址重定向、数据缓存、应答控制等功能,并且还可以配置许多第三方模块。 location块的基本格式: location [= | ~ | ~*] …

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑不确定性的火电发电商现货-深度调峰市场优化决策》

标题涉及到电力行业的领域&#xff0c;尤其是火电发电商在电力市场中面对深度调峰需求时的决策问题。下面是对标题的解读&#xff1a; 考虑不确定性&#xff1a; 这指的是在制定优化决策时&#xff0c;考虑到环境的不确定性&#xff0c;可能包括但不限于电力市场的价格波动、发…

算法—双指针

双指针算法可以帮忙把时间复杂度降低一个维度&#xff0c;即原本O&#xff08;n2&#xff09;降为O(n)&#xff1b;将O(n)降为O(1) 移动零 移动零 题目解析 将所有0移动到末尾保持非0元素相对顺序对数组进行原地操作&#xff08;不开辟额外空间&#xff09; 算法原理 数组…

等保——密评技术要求

密评简介 密评定义&#xff1a;全称商用密码应用安全评估, 是指对采用商用密码技术、产品和服务集成建设的网络和信息系统密码应用的合规性、正确性、有效性进行评估。密评对象&#xff1a;重要信息系统、关键信息基础设施、网络安全等保三级及以上的系统。评测依据&#xff1…

IMO国际奥林匹克数学竞赛推出AI-MO,奖金高达1000万美元; SDXL Turbo: 新一代文本到图像模型

&#x1f989; AI新闻 &#x1f680; IMO国际奥林匹克数学竞赛推出AI-MO&#xff0c;奖金高达1000万美元 摘要&#xff1a;IMO国际奥林匹克数学竞赛推出新的AI竞赛AI-MO&#xff0c;旨在推动大语言模型的数学推理能力&#xff0c;鼓励开发能与人类数学天才相媲美的AI模型。比…

真空工艺腔内潮湿有什么危害?

在半导体制程中&#xff0c;真空工艺腔被广泛使用。薄膜沉积&#xff0c;干法刻蚀&#xff0c;光刻&#xff0c;退火&#xff0c;离子注入等工序均需要在相应的真空腔室中完成相应制程。真空工艺腔在半导体制程中起着至关重要的作用&#xff0c;它能够提供一个高度控制的环境&a…

【ARM CoreLink 系列 8 -- SMMU 详细介绍-上半部】

请阅读【ARM CoreLink 文章专栏导读】 文章目录 SMMU 的基本使用场景SMMU 名词缩写SMMU StreamID 详细介绍SMMU STE 详细介绍SMMU CD 详细介绍SMMU 的基本使用场景 扩大设备DMA寻址范围,一些legacy设备DMA寻址是32bit,无法访问高32bit地址,通过SMMU的转换可以解决这个问题。…

4-docker-compose介绍(部署flask案例、yaml文件、启动)、新建flask项目、编写Dockerfile(用于构建flask项目的镜像)、

1 docker-compose介绍 2 docker-compose部署flask案例 2.1 新建flask项目 app.py 2.2 编写Dockerfile–》用于构建flask项目的镜像 2.3 编写docker-compose的yaml文件 docker-compose.yml 2.4 docker-compose启动 1 docker-compose介绍 1 介绍 """ 使用了docke…

服务器运行train.py报错解决

在服务器配置完虚拟环境以及安装完各种所需库后&#xff0c;发现报错Traceback (most recent call last): File "/root/yolov5-master/yolov5-master/train.py", line 48, in <module> import val as validate # for end-of-epoch mAP File "/root/yolov5…