IP地址处理模块IPy
计算IP地址,包括网段、网络掩码、广播地址、子网数、IP类型等
1、IP地址处理
1、判断地址类型是ipv4还是ipv6
import IPy
l1=IPy.IP('192.168.1.5').version()
print(l1)#4,IPv4地址类型
l1=IPy.IP('::1').version()
print(l1)#6,IPv6地址类型
2、判断网络ip地址个数,输出结果
import IPy
l1=IPy.IP('192.168.1.0/24')
print(len(l1))#输出ip网段的个数,256
for i in l1:#使用循环列出当前网段的所有IP
print(i)
3、判断ip类型,公有、私有、环回等
i公有、私有,本地回环地址等等
import IPy
l1=IPy.IP('192.168.1.1').iptype()
print(l1)#PRIVATE
l1=IPy.IP('100.100.100.100').iptype()
print(l1)#CARRIER_GRADE_NAT
l1=IPy.IP('11.11.11.11').iptype()
print(l1)#PUBLIC
l1=IPy.IP('::1').iptype()
print(l1)#LOOPBACK
4、反向地址解析
import IPy
l1=IPy.IP('192.168.1.1').reverseNames()#反向地址解析
print(l1)
#['1.1.168.192.in-addr.arpa.']
5、ip地址类型转换
import IPy
l1=IPy.IP('192.168.1.1').int()#转换成整形
print(l1)#3232235777
l1=IPy.IP('192.168.1.1').strHex()#十进制转换成十六进制
print(l1)#0xc0a80101
l1=IPy.IP('192.168.1.1').strBin()#十进制转换成二进制
print(l1)#11000000101010000000000100000001
l1=IPy.IP('0xc0a80101')#十六进制转化十进制
print(l1)#192.168.1.1
6、判断ip地址所在网段
根据ip与掩码判断网段
import IPy
l1=IPy.IP('192.168.1.56').make_net(24)
print(l1)#192.168.1.0/24
l1=IPy.IP('192.168.1.1').make_net('255.255.255.0')
print(l1)#192.168.1.0/24
l1=IPy.IP('192.168.1.56/24',make_net=True)
print(l1)#192.168.1.0/24
l1=IPy.IP('192.168.1.56/255.255.255.0',make_net=True)
print(l1)#192.168.1.0/24
l1=IPy.IP('192.168.1.0-192.168.1.255',make_net=True)
print(l1)#192.168.1.0/24
7、strNormal指定输出不同格式类型网段
import IPy
l1=IPy.IP('192.168.1.0/24').strNormal(0)
print(l1)#192.168.1.0
l1=IPy.IP('192.168.1.0/24').strNormal(1)
print(l1)#192.168.1.0/24,默认不写就是它
l1=IPy.IP('192.168.1.0/24').strNormal(2)
print(l1)#192.168.1.0/255.255.255.0
l1=IPy.IP('192.168.1.0/24').strNormal(3)
print(l1)#192.168.1.0-192.168.1.255
2、网络计算
判断两个网段的关系:包含等
1、判断ip是否在某个网段
1、判断ip地址是否在某网段中
import IPy
l1=IPy.IP('192.168.1.1')
l2=IPy.IP('192.168.1.0/24')
print(l1 in l2)#True
2、判断网段是否在某网段中
import IPy
l1=IPy.IP('192.168.1.0/24')
l2=IPy.IP('192.168.0.0/22')
print(l1 in l2)#True
2、判断重叠关系
import IPy
l1=IPy.IP('192.168.1.0/24').overlaps('192.168.1.0/25')
print(l1)#1,有重叠部分
l1=IPy.IP('192.168.2.0/24').overlaps('192.168.1.0/25')
print(l1)#0,没有重叠部分
3、综合使用
import IPy
用户输入=input('请输入地址或网段:(参考格式:192.168.1.1,192.168.1.0/24,192.198.1.1/255.255.255.0)\n请输入:')
IPS=IPy.IP(用户输入)
if len(用户输入)>=0:
print('网络地址:{}'.format(IPS.net()))
print('网络掩码:{}'.format(IPS.netmask()))
print('广播地址:{}'.format(IPS.broadcast()))
print('反向地址解析:{}'.format(IPS.reverseNames()[0]))
print('子网个数:{}'.format(len(IPS)))
4、其它用法
参考文档:
IPy使用参考文档1
IPy使用参考文档2