IP 地址处理模块IPy

news2024/12/23 0:49:52

IP 地址处理模块IPy

    • 介绍
    • 安装
    • 基本操作
    • 多网络计算方法

介绍

IP 地址规划是网络设计中非常重要的一个环节,规划的好坏会直接影响路由协议算法的效率,包括网络性能、可扩展性等方面,在这个过程当中,免不了要计算大量的 IP 地址,包括网段、网络掩码、广播地址、子网数、IP 类型等。
Python 提供了一个强大的第三方模块IPy (htps://github.com/haypo/python-ipy/),最新版本为 V1.0.1。

安装

  • 源码方式安装
$ wget https://pypi.python.org/packages/source/I/IPy/IPy-1.01.tar.gz --no-check-certificate
$ tar zxvf IPy-1.01.tar.gz
$ cd IPy-1.01/
$ sudo python setup.py install
  • pip 安装
pip install IPy

方法:

  • 识别IP 分类
    version()
  • 获取IP 数量
    len()

基本操作

  1. 基本方法
#查看IPV4还是IPV6
from IPy import IP

ip = IP('127.0.0.0/30')
print(ip.len()) 							# 输出192.168.0.0/16 网段的 ip 个数
for x in ip:								# 输出该网段的所有Ip清单
	print(x)
print(ip.version())

在这里插入图片描述

  1. 反向解析名称、IP 类型、IP转换等
from IPy inport IP
ip = IP('192.168.1.20')
print(ip.reverseNames())
print(ip.iptype())							# IP类型为私网段
print(ip.broadcast())						# 广播地址
print(ip.get_mac())							# mac地址
print(ip.int())								# 转换为整数形式
print(ip.strBin())							# 转换为二进制

在这里插入图片描述

  1. 网络地址转换,根据IP和掩码生成网段格式
print(IP('192.168.1.0').make_net('255.255.255.0'))
print(IP('192.168.1.0/255.255.255.0',make_net=True))
print(IP('192.168.1.0-192.168.1.255',make_net=True))

在这里插入图片描述
也可以通过strNormal 方法指定不同的wantprefixlen参数值一定值不同输出类型的网段

print(IP("192.168.1.0/24").strNormal(0))
print(IP("192.168.1.0/24").strNormal(1))
print(IP("192.168.1.0/24").strNormal(2))
print(IP("192.168.1.0/24").strNormal(3))	

在这里插入图片描述

wantprefixlen参数值含义:
wantprefixlen = 0,无返回
wantprefixlen = 1,prefix格式
wantprefixlen = 2,decimalnetmast格式,如 192.168.1.0/255.255.255.0
wantprefixlen = 3,IastIP 格式,如 192.168.1.0-192.168.1.255

多网络计算方法

比较两个网段是否存在包含,重叠等关系。用><等来比较大小关系,用In判断是否包含,用 prefixlen 判断是否重叠。
判断 IP 地址和网段是否包含于另一个网段中

print(IP('10.0.0.0/24') < IP('12.0.0.0/24'))
print('192.168.1.100' in IP('192.168.1.0/24'))
print(IP('192.168.1.0/24') in IP('192.168.0.0/16'))
print(IP('192.168.0.0/23').overlaps('192.168.1.0/24'))	#判断两个网段是否重叠
print(IP('192.168.1.0/24' ).overlaps('192.168.2.0/24'))

判断两个网段是否存在重叠,采用IPy 提供的 overlaps 方法,如:
>>>IP('192.168.0.0/23').overlaps('192.168,1.0/24')
1	#返回1代表存在重受
>>>IP('192.168.1.0/24 ).overlaps('192.168.2.0')
0	#返回 0代表不存在重受

在这里插入图片描述

示例
根据输入的 IP 或子网返回网络、掩码、广播、反向解析、子网数、IP 类型等信息。

from IPy import IP

ip_s = input('Please input an IP or net-range:' )	## 接收用户输入,参数为IP地址或网段地址
ips = IP(ip_s)
if len(ips) > 1:                                            # 为一个网络地址
    print('net: %s'% ips.net())                             # 输出网络地址
    print('netmask: %s' % ips.netmask())                    # 输出网络掩码地址
    print('broadcast: %s' % ips.broadcast())                # 输出网络广播地址
    print('reverse address: %s' % ips.reverseNames()[0])    # 输出地址反向解析
    print('subnet: %s' % len(ips))                          # 输出网络子网数
else:  # 为单个 IP 地址
    print('reverse address: %s' % ips.reverseNames()[0])    # 输出IP反向解析
    print('hexadecimal: %s' % ips.strHex())    				# 输出十六进制地址
    print("binary ip: %s" % ips.strBin())       			# 输出二进制地址
    print('iptype:%s' % ips.iptype())           			# 输出地址类型,如 PRIVATE、PUBLIC、LOOPBACK 等

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

【python】Linux升级版本

目的 迁移项目包路径到服务器上 查看服务器包是否和本地已有项目python版本相同然后发现~嗯不一样 项目上包时用的3.8~ 服务器用的2.7 查看方法&#xff1a; python -version解决方案 一&#xff1a;项目所有包重新下载 二&#xff1a;升级服务器python版本 第二种步骤&…

【虚拟仿真】Unity3D中实现2DUI显示在3D物体旁边

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址QQ群:398291828大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 这篇文章来实现2DUI显示在3D物体旁边,当我们需要在3D模型旁边显示2DUI的时候,比如人物的对…

医疗AI新突破!多模态对齐网络精准预测X光生存,自动生成医疗报告!

PS&#xff1a;写在前面&#xff0c;近期感谢很多小伙伴关注到我写的论文解读&#xff0c;我也会持续更新吖~同时希望大家多多支持本人的公主号~ 想了解更多医学图像论文资料请移步公主&#x1f478;号哦~~~后期将持续更新&#xff01;&#xff01; 关注我&#xff0c;让我们一…

智能驾驶学习笔记,第一天

智能驾驶是智能汽车的核心&#xff0c;指基于先进的传感器和计算平台&#xff0c;通过人工智能技术,让汽车具备自主行驶的能力&#xff0c;旨在辅助驾驶员安全、便捷、高效地完成驾驶任务。智能驾驶有助于减少交通事故、改善交通拥堵&#xff0c;并提高行驶安全性和驾乘舒适性。…

LaTeX行间公式内部公式居中,以及行间公式整体居左

文章目录 多行公式居中行间公式整体居左(不靠谱版) 多行公式居中 行间公式默认整体居中&#xff0c;此处多行公式居中指使用$$ $$时内部公式对齐方式. 普通对齐&#xff1a; \begin{aligned}公式 \end{aligned}上述环境只能用&左对齐或右对齐&#xff08;默认右&#xff0…

【数据结构】排序算法(快速排序、归并排序、排序算法总结)

当你清楚的知道自己想要什么,并且意愿非常强烈的时候,你总会有办法得到的。💓💓💓 目录 ✨说在前面 🍋知识点一:快速排序 • 🌰1.快速排序介绍 • 🌰2.霍尔排序 •🔥三数取中优化 •🔥小区间优化 • 🌰3.前后指针法 • 🌰4.快排非递归方法 🍋…

jvm调优参数

JVM调优是指调整JVM的参数&#xff0c;以优化Java程序的性能。以下是一些常用的JVM调优方法&#xff1a; 1.堆内存大小&#xff1a;通过-Xms和-Xmx参数设置JVM的初始堆内存和最大堆内存。堆内存太小会导致频繁GC&#xff0c;太大则可能导致内存利用率不高。 2.新生代与老年…

Java 设计模式之策略模式 (Strategy Pattern) 详解

Java 设计模式之策略模式 (Strategy Pattern) 详解 策略模式&#xff08;Strategy Pattern&#xff09;是一种行为型设计模式&#xff0c;旨在定义一系列算法&#xff0c;将每个算法封装起来&#xff0c;并使它们可以互相替换&#xff0c;从而使得算法的变化不会影响使用算法的…

掩码、反掩码、通配符的区别和计算方式

注&#xff1a;几篇文章合集捋清掩码、反掩码、通配符的区别。 ACL 通配符&#xff0c;子网掩码&#xff0c;反掩码区别和计算方式 192.168.1.1 255.255.255.0 掩码&#xff1a; 1111111111111111000000000 左边永远是 1&#xff0c;右边永远是 0 1 和 0 &#xff0c;永远不…

UE Spinbox 控件支持Double类型及Float精度问题

UE Spinbox 控件支持Double类型及Float精度问题 问题 众所周知&#xff0c;使用float来表示GIS坐标时&#xff0c;往往由于坐标的有效数字超过7位时&#xff0c;无法表达坐标的小数部分&#xff0c;即精度不够。 方案 1、取区域中心点的局部坐标的形式&#xff0c;使得坐标…

C#列表按照日期进行从大到小排序

C#列表按照日期进行从大到小排序

多路径 bbr mpbbr 公平性推演

mptcp 推出很久了&#xff0c;先看 rfc6356 三原则&#xff1a; 对自己&#xff0c;mptcp 的吞吐不能比用 sp(single path)tcp 时更差&#xff1b;对它者&#xff0c;mptcp 子流对资源的占用不能侵害其它 sptcp 流量&#xff1b;负载分担&#xff0c;要将孬 subflow 流量分担到…

Unity Rigidbody 踩坑记录

1&#xff1a;两个带有刚体的物体碰撞会一直不停的弹 把被动受力的刚提的 Freeze Position 的勾选 去掉&#xff08;碰到过一次&#xff0c;有一种受力无法释放又返回给目标的 所以一直弹跳的感觉&#xff09; 2&#xff1a;子物体 和父物体 都有刚体的情况下 子物体 Freeze R…

WEB渗透Web突破篇-PHP文件包含下载读取

php任意文件读取/下载 readfile()、file_get_contents()、fopen()等读文件的函数不严谨&#xff0c;读取文件路径可控&#xff0c;输出内容。 下载配置文件 Redis、Weblogic、ftp、mysql、web配置文件、history文件、数据库配置文件 下载log文件 下载web文件 /1.php?f../../e…

C#实现数据采集系统-配置文件化

系统优化-配置 配置信息ip端口,还有点位信息,什么的都是直接在代码里直接写死,添加点位,修改配置,比较麻烦,每次修改都需要重新生成打包。 所以将这些配置都改成配置文件,这样只需要修改配置文件,程序无须修改,即可更新。 配置代码: 如果我们有100个采集,一个个去…

ReactiveStream

消息传递是响应式核心 ReactiveStream规范核心接口 ReactiveStream发布数据 发布者要保存订阅者 发布者要知道谁要拿他的数据&#xff0c;发布者要知道他把数据要给谁 reactive stream发布订阅的写法 subscribe订阅者 publish发布者 subscription 绑定关系 onXXX事件…

MySQL:基础增删查改

MySQL&#xff1a;基础增删查改 插入插入冲突 查询distinctwhereorder bylimit 删除deletetruncate 更新 插入 基本插入语法&#xff1a; insert [into] 表名 (列1, 列2 ...) values (值1, 值2 ...);into可以省略(列1, 列2 ...)与后面的(值1, 值2)一一对应如果插入时数据完全…

药明康德:头顶达摩克利斯之剑

头顶达摩克里斯之剑&#xff0c;CXO龙头——药明康德的日子好过吗&#xff1f; 在行业下行周期、美国法案阴霾压力之下&#xff0c;药明康德交出今年上半年的成绩单&#xff0c;营收净利双双下滑&#xff0c;净利润更是同比减少20.2%。 看起来情况糟糕&#xff0c;但显然让被法…

基于YOLOv8的船舶检测系统

基于YOLOv8的船舶检测系统 (价格85) 包含 【散货船&#xff0c;集装箱船&#xff0c;渔船&#xff0c;杂货船&#xff0c;矿砂船&#xff0c;客船】 6个类 通过PYQT构建UI界面&#xff0c;包含图片检测&#xff0c;视频检测&#xff0c;摄像头实时检测。 &#xff08;该…

【竞技宝】DOTA2雪如意:ame水人逆转 XG力克NAVI

北京时间2024年8月2日,DOTA2雪如意杯在昨天将迎来淘汰赛首个比赛日,本日一共进行四场比赛,第二场比赛由NAVI对阵XG。本场比赛双方前两局战至1-1平,决胜局XG前期局势很劣,但中期拖住局势等到了ame水人装备成型,最终XG2-1击败NAVI。以下是本场比赛的详细战报。 第一局: 首局比赛…