Python IPy模块

#!/usr/bin/env python
# -*- coding: utf-8 -*
# Created by YangYongming at 2018/09/17 20:22
# FileName: ipy.py

import IPy

ip1 = IPy.IP("220.181.199.13")
ip2 = IPy.IP("220.181.199.0/24")
ip3 = IPy.IP("220.181.199.0/255.255.255.0")

# IP 及 网段的基本处理
print(ip3.len())  # 计算IP地址个数:256
print(ip1.version())  # 输出IP地址的版本:4
print(ip2.netmask())  # 输出掩码:255.255.255.0
print(ip1.iptype())  # 输出IP地址是公网IP还是私网IP:PUBLIC
print(ip1.reverseName())  # 反向解析IP地址格式:13.199.181.220.in-addr.arpa.
print(ip1.reverseNames())  # 反向解析IP地址格式,返回列表格式:['13.199.181.220.in-addr.arpa.']
print(ip2.broadcast())  # 输出一个网段的广播地址:220.181.199.255
# for i in ip2:  # 打印输出IP地址
#    print(i)

# IP地址进制转换
print(ip1.strBin())  # 转换为二进制:11011100101101010110001100001101
print(ip1.strHex())  # 转换为十六进制:0xdcb5630d
print(ip1.int())  # 转换为十进制:3702874893

# 通过wantprefixlen参数“0,1,2,3,4 ”转换成自己想要的地址格式,字符串格式的
print(ip2.strNormal(0))  # 220.181.199.0
print(ip2.strNormal(1))  # 220.181.199.0/24
print(ip2.strNormal(2))  # 220.181.199.0/255.255.255.0
print(ip2.strNormal(3))  # 220.181.199.0-220.181.199.255

# 根据IP和掩码 生成 *.*.*.*/* 的格式
print(ip1.make_net('255.255.255.0'))  # 获取220.181.199.13与掩码255.255.255.0计算,CDR格式:220.181.199.0/24
print(IPy.IP('220.181.199.13/255.255.255.0', make_net=True))  # 将220.181.199.13/255.255.255.0地址格式转换为220.181.199.0/24
print(IPy.IP('220.181.199.0-220.181.199.255', make_net=True))  # 将220.181.199.0-220.181.199.255地址段转换为220.181.199.0/24格式

# 判断IP地址是否在一个网段中
print("192.168.1.22" in IPy.IP("192.168.1.0/24"))  #: True
print("192.168.2.22" in IPy.IP("192.168.1.0/24"))  #: False

# 比较两个网段的大小
print(IPy.IP("192.168.3.0/24") > IPy.IP("192.168.1.0/24"))  #: True

# 判断两个网段是否有重叠
print(IPy.IP("192.168.3.0/24").overlaps("192.168.4.0/24"))  # :0 表示不存在重叠
print(IPy.IP("192.168.2.0/23").overlaps("192.168.3.0/24"))  # :1 表示存在重叠

# IP地址排序
L = ['1.4.5.32', '4.5.3.2', '1.2.3.4', '6.1.1.1']
L1 = sorted(L, key=lambda x: IPy.IP(x).int())
for i in L1:
    print(i)

 

posted @ 2018-09-18 21:40  YangYongming  阅读(262)  评论(0编辑  收藏  举报