ip地址范围汇总成ip网段
将ip地址范围转换成通过掩码表示的形式,可以先将ip范围转换成单个ip,再计算掩码
一、python中实现将IP地址与整数类型之间的转换,有两种方法。
第一种方法:利用socket,struct模块
import socket import structdef ip2num(ip):#将IP地址转换成整数,返回结果是一个元组(16843009,),通过下标[0]取出第一个值return struct.unpack("!L", socket.inet_aton(ip))[0]print(ip2num('1.1.1.1')) print(type(ip2num('1.1.1.1')))#16843009 #<class 'int'>def num2ip(num):#将整数转换成IP地址,类型为字符串return socket.inet_ntoa(struct.pack("!L", num))print(num2ip(16843009)) print(type(num2ip(16843009)))#1.1.1.1 #<class 'str'>
第二种方法:利用ipaddress模块,ipaddress中有两种方式:
1、使用ipaddress中的IPv4Address和IPv6Address模块,可指定需要转换的IP地址类型,如果类型不匹配则会报错。
import ipaddressdef ip2num(ip):#将IP地址转换成整数类型return int(ipaddress.IPv4Address(ip))print(ip2num('1.1.1.1')) print(type(ip2num('1.1.1.1'))) #16843009 #<class 'int'>def num2ip(num):#将整数转换成IP地址return str(ipaddress.IPv4Address(num))print(num2ip(16843009)) print(type(num2ip(16843009))) #1.1.1.1 #<class 'str'>def num2ipv6(num):return str(ipaddress.IPv6Address(num))print(num2ipv6(33686018123141231234123123124124123412)) #1957:b0eb:ffa4:5af4:7b46:e610:c5d6:114def ipv62num(ipv6):return int(ipaddress.IPv6Address(ipv6))print(ipv62num('1957:b0eb:ffa4:5af4:7b46:e610:c5d6:114')) #33686018123141231234123123124124123412
2、直接使用ipaddress中的ip_address模块,可以自动识别IP地址的类型,进行转换。
from ipaddress import ip_addressprint(int(ip_address('2.2.2.2'))) #33686018print(str(ip_address(33686018))) #2.2.2.2print(int(ip_address('1957:b0eb:ffa4:5af4:7b46:e610:c5d6:114'))) #33686018123141231234123123124124123412print(str(ip_address(33686018123141231234123123124124123412))) #1957:b0eb:ffa4:5af4:7b46:e610:c5d6:114
例子:将IP地址范围转换成单个IP
from ipaddress import ip_addressdef ips_range(ips_range):#以‘-’为分割符,识别出起始IP和终止IPip_start, ip_end = ips_range.split('-')#将起始IP和终止IP转换成整数ip_start_int = int(ip_address(ip_start))ip_end_int = int(ip_address(ip_end)) + 1return [str(ip_address(ip)) for ip in range(ip_start_int, ip_end_int)]ips_range_list = ips_range('1.1.1.251-1.1.2.5') print(ips_range_list)#['1.1.1.251', '1.1.1.252', '1.1.1.253', '1.1.1.254', '1.1.1.255', '1.1.2.0', '1.1.2.1', '1.1.2.2', '1.1.2.3', '1.1.2.4', '1.1.2.5']
3、列出IP网段中所有的IP地址
import ipaddress def ip_network2ips(ips_network):#将ip网段的字符串类型转换成IPv4Network类型network = ipaddress.ip_network(ips_network, strict=False)#print(network, type(network))#1.1.1.0/29 <class 'ipaddress.IPv4Network'>#调用hosts()方法,将ip网段转换成单个ipreturn network.hosts()ips = ip_network2ips('1.1.1.1/29') for ip in ips:print(ip)# 1.1.1.1 # 1.1.1.2 # 1.1.1.3 # 1.1.1.4 # 1.1.1.5 # 1.1.1.6
二、对所有单个ip进行汇总,计算是否在同一网段中,对同一网段中可汇总和ip地址通过计算子网掩码进行汇总表示
。。。
参考https://docs.python.org/3/howto/ipaddress.html#comparisons
转载于:https://www.cnblogs.com/dxnui119/p/11249305.html
ip地址范围汇总成ip网段相关推荐
- python 实现ip分配_Python实现根据IP地址和子网掩码算出网段的方法
本文实例讲述了Python实现根据IP地址和子网掩码算出网段的方法.分享给大家供大家参考.具体如下: 该代码在Linux环境2.6.6python版本测试通过! #!/usr/bin/env pyth ...
- 修改用友服务器ip地址,用友服务器ip地址更换
用友服务器ip地址更换 内容精选 换一换 若用户想要更换Ubuntu服务器的IP地址,则Mind Studio安装使用的IP地址也要随之更换,方法如下:如果env.conf文件中的IP配置为Ubunt ...
- linux 修改ip地址_Day.19 变更IP地址
一.怎么登陆交换机及服务器?去做网络和服务器配置? 登陆交换机和服务器的跳板不是一个. 登陆交换机的跳板机也是一个Linux服务器 1.ssh 交换机的跳板机(Linux服务器) ssh xxxxx ...
- ip地址分类及预留ip地址大全
现在的IP网络使用32位地址,以点分十进制表示,如172.16.0.0.地址格式为:IP地址=网络地址+主机地址 或 IP地址=主机地址+子网地址+主机地址. IP地址类型 最初设计互联网络时,为了便 ...
- win7系统怎么查看服务器IP地址,win7系统的ip地址在哪 小编教你怎么查看
很多刚开端运用windows7系统的朋友不晓得w7的ip地址在哪.w7的ip地址在哪?小编教你怎样查看w7的ip地址.今天小编就带来了两种十分简单查看w7的ip地址的办法供大家学习.w7的ip地址在哪 ...
- android解析ip地址,android – 如何从IP地址解析网络主机名
我正在研究基于wifi的聊天引擎,我能够通过跟随this链接检索连接到当前wifi网络的主机列表,现在获得了具有ip地址的设备列表但我需要来自ip地址的主机名并尝试以下 InetAddress ine ...
- 计算机IP地址pin,打印机的ip地址在机身上哪里,打印机的pin在哪看
打印机的ip地址在机身上哪里,打印机的pin在哪看 时间:2021-04-19 10:38:04 打印机是我们日常工作中必备的公办用品,但是对于刚接触打印机的电脑小白来说,打印机的网络设置可不简单,比 ...
- java判断内网ip_Java判断IP地址为内网IP还是公网IP的方法
本文实例讲述了Java判断IP地址为内网IP还是公网IP的方法.分享给大家供大家参考.具体分析如下: tcp/ip协议中,专门保留了三个IP地址区域作为私有地址,其地址范围如下: 10.0.0.0/8 ...
- php网站服务器ip地址吗,php 服务器ip地址吗
php 服务器ip地址吗 内容精选 换一换 LAMP是由Linux.Apache.MySQL和PHP 建立的web应用平台.本文档指导用户使用华为云市场镜像"LNMP平台(CentOS7.4 ...
最新文章
- linux环境变量显示、添加、删除
- 22. loacte命令
- java 只显示文本文件_Java设计并实现一个应用程序,能够读取一个文本文件中的内容并显示,同时能够计算出文本中的行数。...
- Maven仓库添加自定义jar包
- 删除Linux下/tmp目录引起的不正常登录系统
- 40个script 常用代码
- 学术诚信的重要性_论文投稿触犯“忌讳”,选择“三缄其口”?学术道德底线不能丢...
- C语言创建学生姓名分数链表,C语言编程 编写程序,建立一个学生数据链表,学生的数据包括学号、姓名、成绩。...
- 【优化调度】基于matlab粒子群算法求解水火电系统经济、环境运行单目标调度优化问题【含Matlab源码 1138期】
- office visio 替代_5款替代微软Visio的开源免费软件(转)
- 数据分析的软件最全场景盘点
- 码栈——让一切变得自动化
- android cpu调度策略_最完整的Android CPU模式设置和功能
- 智能商场管理系统(可当做毕设)
- JDK1.6支持TSL1.2协议
- 深入第一个机器学习算法: K-近邻算法(K-Nearest Neighbors)
- Linux下常用软件安装指南
- matlab自动生成excel工作区,matlab数据怎么导出excel表格-matlab工作区数据怎么转为excel...
- ffmpeg之mp4文件解封装截取一段视频并重封装
- 【C++】不同模板对象之间赋值
热门文章
- 奥特曼传奇英雄存档丢了怎么找回_热血传奇复古传奇:传奇游戏手机版竟然比端游还火爆?你觉得呢?...
- itext生成pdf paragraph 自动换行_reportlab高级制作多格式PDF和python的class和装饰器复习
- 怎么安装python3.7.3_windows系统安装python3.6.3和python3.7.0
- 前景检测算法(三)--帧差法
- python力导向图论文_力导向图(关系图) echarts的运用
- 嵌入式系统——系统安全之常见病毒漏洞刷题整理
- php实现排序,PHP实现各种排序
- 【数据库原理实验(openGauss)】实验报告
- Linux下setsockopt函数返回-1,errno=22
- 【一起学爬虫】PyQuery详解