python学习—— IPy 强大的IP地址解析模块

python学习—— IPy 强大的IP地址解析模块       最近在忙着做计算机网络的课程设计,打算写一个可以扫描内网主机的扫描工具。学习过程中安利到了许多python新姿势,IPy模块就是其中一个。1.IPy模块。       在IP地址规划中,涉及到计算大量的IP地址,包括网段、网络掩码、广播地址、…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

       最近在忙着做计算机网络的课程设计,打算写一个可以扫描内网主机的扫描工具。学习过程中安利到了许多python新姿势,IPy模块就是其中一个。

1.IPy模块。

       在IP地址规划中,涉及到计算大量的IP地址,包括网段、网络掩码、广播地址、子网数、IP类型等别担心,IPy模块拯救你。IPy模块可以很好的辅助我们高效的完成IP的规划工作,它是专门用来处理IP地址的模块。
       安装:

pip install IPy

Jetbrains全家桶1年46,售后保障稳定

2.功能。

(1)通过version分辨IP地址版本。

>>> import IPy
>>> IPy.IP('10.0.0.0/8').version()
4
>>> IPy.IP('::1').version()
6

(2)通过指定的网段输出该网段的IP个数和所有的IP地址清单。

>>> ip = IPy.IP("192.168.1.0/24")
>>> print(ip.len())
256
>>> for x in ip:
	print(x)

(3)反向解析名称、IP类型、IP转换等。

>>> ip = IPy.IP("192.168.1.107")
>>> ip.reverseName()         #反向解析IP
'107.1.168.192.in-addr.arpa.'
>>> ip.iptype()              #判断IP地址的公私类型
'PRIVATE'
>>> ip.int()                 #将IP转换成整型
3232235883
>>> ip.strHex()              #将IP转换成十六进制
'0xc0a8016b'    
>>> ip.strBin()              #将IP转换成二进制
'11000000101010000000000101101011'
>>> IPy.IP(3232235883)       #将二进制转换整型IP地址
IP('192.168.1.107')
>>> IPy.IP('0xc0a8016b')     #将十六进制转换整型IP地址
IP('192.168.1.107')

(4)根据IP和掩码产生网段格式。

>>> print(IPy.IP('192.168.1.0').make_net('255.255.255.0'))
192.168.1.0/24
>>> print(IPy.IP('192.168.1.0/255.255.255.0',make_net = True))
192.168.1.0/24
>>> print(IPy.IP('192.168.1.0-192.168.1.255',make_net = True))
192.168.1.0/24

(5)输出类型的网段。

>>> print(IPy.IP('192.168.1.0/24').strNormal(0))    #无返回
192.168.1.0
>>> print(IPy.IP('192.168.1.0/24').strNormal(1))    #返回#prefix格式
192.168.1.0/24
>>> print(IPy.IP('192.168.1.0/24').strNormal(2))    #返回#decimalnetmask格式
192.168.1.0/255.255.255.0
>>> print(IPy.IP('192.168.1.0/24').strNormal(3))    #返回lastIP格式
192.168.1.0-192.168.1.255

(6)比较IP大小。

>>> from IPy import IP
>>> IP('10.0.0.0/24') < IP('12.0.0.0/24')
True

(7)判断IP地址是否包含于一个网段中。

>>> IP('192.168.1.107') in IP('192.168.1.0/24')
True
>>> IP('192.168.2.107') in IP('192.168.1.0/24')
False

(8)判断网络是否存在重叠。

>>> 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/24')
0  #返回0代表不存在重叠!

3.项目实战。

       在完成主机扫描的过程中我主要用到了IPy来生成地址池,下面是我的代码:

import IPy
def makeIpPool(startIP, lastIP,IPv6=False):
    '''生产 IP 地址池'''
    IPver = 6 if IPv6 else 4   #判断IP地址是否为IP类型默认为IPv4
    intIP = lambda ip: IPy.IP(ip).int()  # 将IP地址转换为整型格式
    ipPool = {IPy.intToIp(ip, IPver) for ip in range(intIP(startIP), intIP(lastIP) + 1)}
    print(len(ipPool))
    print(ipPool)
makeIpPool('192.168.1.1','192.168.1.255')

       这个代码将自动生成192.168.1.0这个网段的所有IP地址并且以列表的形式存储。其中IPy.intToIp(ip, IPver)主要用来将IP地址从整型格式转为点分十进制表示法,第一个参数为IP整型格式,第二个参数为要转的IP地址类型,可以是4或者6。
       IPy模块还有更多的功能等待着你我去探究。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/226823.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Dreamweaver8安装方法教程[通俗易懂]

    Dreamweaver8安装方法教程[通俗易懂]打开百度网盘下载http://pan.baidu.com/s/1wIMYi打开下载好的Dreamweaver8,点击下一步选择接受,下一步选择安装路径,点击下一步其它默认勾选的,不

    2022年7月26日
    7
  • 以《简单易懂》的语言带你搞懂逻辑回归算法【附Python代码详解】机器学习系列之逻辑回归篇

    以《简单易懂》的语言带你搞懂逻辑回归算法【附Python代码详解】机器学习系列之逻辑回归篇目录必看前言逻辑回归算法1概述2基本原理3sklearn实现3.1导入数据(乳腺癌数据集)3.2建模3.3绘制学习曲线3.4网格搜索-确定最优参数结束语必看前言这一篇文章,我会详细从机器学习的角度介绍逻辑回归,以及如何利用Python来实现逻辑回归以及逻辑回归的实战模拟,另外我也会教大家如何利用网格搜索找到最优参数。干货满满!逻辑回归算法1概述分类技术是机器学习和数据挖掘应用中的重要组成部分。在数据科学中,绝大多数的问题属于分类问题。解决分类的算法也有很多种。如:KNN,使距

    2022年8月21日
    5
  • hd disk / HDD / SSD / USB / FireWire(1394) / eSATA / SATA / mSATA / NGFF[通俗易懂]

    hd disk / HDD / SSD / USB / FireWire(1394) / eSATA / SATA / mSATA / NGFF[通俗易懂]MBR主启动记录/GPTGUID分区表注意:所有早起版本的Windows不识别GPT分区形式。建议在大于2TB的磁盘或基于Itanium的计算机所用的磁盘上使用这种分区形式。硬盘厂商http://www.westerndigital.com/WD1TB/AmphenolSATA001025231206211WD2TB/PartNumber:406…

    2025年8月27日
    9
  • SAP_FICO常用BAPI

    SAP_FICO常用BAPI1、检查创建凭证所需数据是否正确BAPI_ACC_DOCUMENT_CHECK;   2、创建凭证BAPI_ACC_DOCUMENT_POST。

    2022年7月24日
    24
  • 对于SqlSessionTemplate的理解

    对于SqlSessionTemplate的理解写在开始最近利用闲暇时间猫了一下mybatis和mybatis-spring的源码,看后发现SqlSessionTemplate和MapperFactoryBean这两个类对于mybatis的事务操作起到了关键的作用,因此写个随笔记录一下。本篇主要讲述下我个人对于SqlSessionTemplate的理解,关于MapperFactoryBean后续有时间会再写一篇文章记录一下。SqlSessionTemplateSqlSessionTemplate对于Mybatis事务提交起到了一个关键作用。先

    2022年5月31日
    28
  • 提交表单的4种方式_java自定义表单

    提交表单的4种方式_java自定义表单通用提交按钮–>2、提交3、说明:用户提交按钮或图像按钮时,就会提交表单。使用或都可以定义提交按钮,只要将其特性的值设置为“submit”即可,而图像按钮则是通过的type特性值设置为”image”来定义的。因此,只要我们单击一下代码生成的按钮,就可以提交表单。4、阻止表单提交只要在表单中存在上面列出的任何一种按钮,那么相应表单控件拥有焦点的情况下,按回车键就可以提交表单。如果表单里没有提…

    2022年9月1日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号