ipy模块计算IP地址,包括网段、网络掩码、广播地址、子网数、IP类型等
1、IP地址处理
1.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地址类型
1.2 判断网络ip地址个数,输出结果
import IPy
l1=IPy.IP('192.168.1.0/24')
print(len(l1))#输出ip网段的个数,256
for i in l1:#使用循环列出当前网段的所有IP
print(i)
1.3 判断ip类型,公有、私有、环回等
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
1.4 反向地址解析
import IPy
l1=IPy.IP('192.168.1.1').reverseNames()#反向地址解析
print(l1)
#['1.1.168.192.in-addr.arpa.']
1.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
1.6 判断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
1.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、网络计算
判断两个网段的关系:包含等
2.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.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.3判断重叠关系
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、其它用法
收藏以备不时之需。
参考:https://blog.csdn.net/qianshuiliyu/article/details/122955589