IP地址处理模块(IPy)

IPy这个强大的Python第三方包主要提供了包括网段、网络掩码、广播地址、子网数、IP类型的处理等等功能。

1、安装

sudo pip3 install IPy

详细帮助可以使用help(IPy)

2、判断IP版本

>>> import IPy
>>> IPy.IP("127.0.0.1").version()
4
>>> IPy.IP("10.0.0.0/24").version()
4
>>> IPy.IP("::1").version()
6

3、解析IP地址段

>>> ips = IPy.IP("192.168.1.0/24")
>>> print(len(ips))
256
>>> for ip in ips:
... print(ip)
...
192.168.1.0
192.168.1.1
192.168.1.2
192.168.1.3
...
192.168.1.255

4、获取子网掩码、网络前缀、广播地址

>>> ips.netmask()
IP('255.255.255.0')
>>> ips.prefixlen()
24
>>> ips.broadcast()
IP('192.168.1.255')

5、IP地址反向解析、转进制、以及IPv4和IPv6相互转换

>>> ip.reverseName()
'100.1.168.192.in-addr.arpa.'
>>> ip.strBin()
'11000000101010000000000101100100'
>>> ip.strHex()
'0xc0a80164'
>>> ip.strDec()
'3232235876'
>>> ip.v46map()
IP('::ffff:192.168.1.100')

6、生成网段

>>> print(IPy.IP('127.0.0.1').make_net('255.0.0.0'))
127.0.0.0/8
>>> print(IPy.IP("192.168.1.0-192.168.1.255",make_net=True))
192.168.1.0/24
>>> print(IPy.IP("192.168.1.1/255.255.255.0",make_net=True))
192.168.1.0/24

7、获取不同类型(格式的网段)

>>> IPy.IP("192.168.10.0/24").strNormal()
'192.168.10.0/24'
>>> IPy.IP("192.168.10.0/24").strNormal(0)
'192.168.10.0'
>>> IPy.IP("192.168.10.0/24").strNormal(1)
'192.168.10.0/24'
>>> IPy.IP("192.168.10.0/24").strNormal(2)
'192.168.10.0/255.255.255.0'
>>> IPy.IP("192.168.10.0/24").strNormal(3)
'192.168.10.0-192.168.10.255'

8、IP比较,可判断IP和网段是否在另一个网段或范围内

>>> "192.168.100.1" in IP("192.168.100.0/24")
True
>>> "192.168.200.1" in IP("192.168.100.0/24")
False
>>>'192.168.1.0/24' in IPy.IP('192.168.0.0/16')
True
>>>'192.168.1.0/24' in IPy.IP('192.168.0.0-192.168.8.255')
True

9、判断是否重叠

>>> IP("192.168.100.0/23").overlaps("192.168.100.0/24")
1 # 1 代表重叠
>>> IP("192.168.100.0/25").overlaps("192.168.100.0/24")
1
>>> IP("192.168.200.0/25").overlaps("192.168.100.0/24")
0
原文地址:https://www.cnblogs.com/dxnui119/p/14669410.html