美文网首页python
21. Python之IPy模块

21. Python之IPy模块

作者: 随便写写咯 | 来源:发表于2021-06-01 01:12 被阅读0次

1 安装

1.1 pip安装

pip3 install IPy

1.2 安装后确认

>>> import IPy
>>> dir(IPy)
['INT_TYPES', 'IP', 'IPSet', 'IPV6_MAP_MASK', 'IPV6_TEST_MAP', 'IPint', 'IPv4ranges', 'IPv6ranges', 'MAX_IPV4_ADDRESS', 'MAX_IPV6_ADDRESS', 'STR_TYPES', '_BitTable', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '__version__', '_checkNetaddrWorksWithPrefixlen', '_checkNetmask', '_checkPrefix', '_count0Bits', '_count1Bits', '_countFollowingZeros', '_intToBin', '_ipVersionToLen', '_netmaskToPrefixlen', '_parseAddressIPv6', '_prefixlenToNetmask', '_remove_subprefix', 'bisect', 'collections_abc', 'intToIp', 'parseAddress', 'types', 'xrange']

2 模块的基本使用

语法:
IP("地址|网段").方法()

2.1 .version()

识别ip地址分类
>>> from IPy import IP
>>> IP("10.0.0.0").version() # 如果是具体地址, 不要加掩码, 会报错
4
>>> IP("10.0.0.0/24").version()
4

2.2 .len()

获取网段ip地址数量
>>> IP("10.0.0.0/24").len() 
256
>>> IP("10.0.0.1").len() 
1
# 如果是具体地址, 不要加掩码, 会报错
>>> IP("10.0.0.1/24").len()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python38\lib\site-packages\IPy.py", line 263, in __init__
    raise ValueError("%s has invalid prefix length (%s)" % (repr(self), self._prefixlen))
ValueError: IP('10.0.0.1/24') has invalid prefix length (24) 

2.3 获取一个网段, 所有的ip地址

from IPy import IP

ip_range = IP("10.0.0.0/30") 
for i in ip_range:
    print(i)
10.0.0.0
10.0.0.1
10.0.0.2
10.0.0.3
# IP()的结果, 就是括号中的ip地址本身, 属于类
# 可以直接for循环, 遍历IP("网段")中的ip信息
<class 'IPy.IP'>

2.4 获取一个网段, 可用的ip地址, 并存到指定文件

import IPy

input_ip = input('Please type ip add in CIDR format(10.0.0.0/24): ').strip()

ip_list = IPy.IP('{}'.format(input_ip))  # 输出的地址包括网络位和广播地址

sum_ip = len(ip_list)-2  # 减去网络位和广播地址

print('Total Available IP is {}'.format(sum_ip))

src_file = input("Please type where you would like to save the result in absolute path: ").strip()

with open(r'{}'.format(src_file), mode = 'wt', encoding = 'utf-8') as f: # 将ip地址存到指定文件
    for i in ip_list:
        f.write(str('{}\n'.format(i)))

3 ip地址基本操作

3.1 反向地址解析

>>> from IPy import IP
>>> ip = IP("10.0.0.0")
>>> print(ip.reverseNames())
['0.0.0.10.in-addr.arpa.']

3.2 查看地址类型

IP("10.0.0.0").iptype()

3.3 格式转换

  • 给定ip地址和Netmask, 转成CIDR格式的网络地址(给定的IP值是主机地址)
from IPy import IP
ip_addr = IP("192.168.1.10")
ip_result = ip_addr.make_net("255.255.255.0")
print(ip_result)
>> 192.168.1.0/24
  • 给定ip和Netmask, 转成CIDR格式的网络地址(给定的IP值是网络地址)
from IPy import IP
ip_addr = IP("172.17.0.0")
ip_result = ip_addr.make_net("255.255.0.0")
print(ip_result)
>> 172.17.0.0/16
  • 根据网络地址和广播地址, 求出其属于的网段(给的值必须是网络地址和广播地址, 否则报错)
from IPy import IP
ip_addr = "192.168.10.0-192.168.10.255"
ip_result = IP(ip_addr,make_net=True)
print(ip_result)
>> 
192.168.10.0/24

3.4 输出一个网段的不同信息

利用.strNormal()通过wantprefixlen数值, 来获取一个网段的不同信息
要求输入是一个网段
from IPy import IP
ip_net = '192.168.1.0/24'
print(IP(ip_net).strNormal(wantprefixlen=0))
print(IP(ip_net).strNormal(wantprefixlen=1))
print(IP(ip_net).strNormal(wantprefixlen=2))
print(IP(ip_net).strNormal(wantprefixlen=3))
192.168.1.0 
192.168.1.0/24
192.168.1.0/255.255.255.0
192.168.1.0-192.168.1.255

相关文章

  • 21. Python之IPy模块

    1 安装 1.1 pip安装 1.2 安装后确认 2 模块的基本使用 2.1 .version() 2.2 .le...

  • IP地址处理模块IPY

    IPY是python的一个第三方模块 IPY模块可以辅助我们 高效完成ip的规划工作

  • Python IPy模块

    IP地址、网段的基本处理 IPy模块包含IP类,可以方便的处理绝大部分个是为IPv6和IPv4的网络和地址。可以通...

  • Python获取IP地址对应的地理位置信息!

    开发工具 Python版本:3.6.4相关模块:IPy模块;argparse模块;requests模块;以及一些P...

  • IP地址处理

    IPy模块下载地址; wget https://pypi.python.org/packages/source/I...

  • Python3 IPy模块用法

    Python3中的IPy模块使用详解如下: 执行结果: 执行结果如下:

  • 【Python与网络3】

    使用IPy进行IP地址管理 IPy模块介绍 IPy模块是一个处理IP地址的模块,它能够自动识别IP地址的版本、IP...

  • IPY对于ip地址、网段的基本处理

    IPY模块有ip类 [root@bogon IP]# vim ip.py !/usr/bin/env python...

  • Python之IPy

    IPy 简介:IPy-用于处理IPv4和IPv6地址和网络的类和工具。 网址: https://github.co...

  • Python常用模块

    Python常用模块之time模块 Python常用模块之os模块 Python常用模块之sys模块 Python...

网友评论

    本文标题:21. Python之IPy模块

    本文链接:https://www.haomeiwen.com/subject/mwjhxltx.html