python中IPy库用法详解

使用python遍历所有的ip,可以借助第三方库IPy来获取所有的ip。

安装IPy库:

pip install IPy

1、遍历IP网段中所有IP并打印个数

示例代码1:

import IPy


def get_ips(ipa):
    """
    根据网段/子网来获取ip的函数
    :param ipa:
    :return:
    """
    ips = IPy.IP(ipa)
    for ip in ips:
        print(ip)
    print(f"该IP网段共包含ip总个数为:{ips.len()}个!")


if __name__ == '__main__':
    try:
        params = input("请输入IP网段:(例:192.168.124.0/24)")
        get_ips(params)
    except Exception as e:
        print(e)

运行结果1:

运行结果2:

运行结果3:

运行结果4:

示例代码2:

# ip地址 网段的基本处理
from IPy import IP

# 定义ip网段
ip = IP("192.168.0.0/16")

# 打印输出该网段的ip个数
print("该网段ip数:", ip.len())

# 循环遍历打印输出ip
for x in ip[:3]:
    print(x)
print('......')
for x in ip[-3:]:
    print(x)

运行结果:

2、反向解析地址格式

示例代码:

from IPy import IP

# 反向解析地址格式
ip = IP('192.168.1.250')
reverse = ip.reverseName()
print("反向解析地址格式:", reverse)

运行结果:

3、获取IP地址类型

示例代码:

from IPy import IP

ip = IP('192.168.1.250')

# 获取地址类型
typeIP = ip.iptype()
print('获取地址类型:', typeIP)
print(IP('8.8.8.8').iptype())

运行结果:

4、IP转换为其它格式

示例代码:

from IPy import IP

ip = IP('192.168.1.250')

# 转换成整型格式
print('整型格式转换:', ip.int())
print('二进制格式转换:', ip.strBin())
print('十六进制格式转换:', ip.strHex())
print('十六进制转换成ip:', IP(0xc0a80182))

# 将整型格式转换为ip地址
print("整型格式转换IP格式:", IP(ip.int()))

运行结果:

5、根据ip和掩码生成网段格式

示例代码:

from IPy import IP

ip = IP('192.168.1.250')

# 根据ip和掩码生成网段格式
print('根据ip和掩码生成网段格式:', ip.make_net('255.255.255.0'))
print('根据ip和掩码生成网段格式:', IP('192.168.1.0').make_net('255.255.255.0'))
print(IP('192.168.2.0/255.255.255.0', make_net=True))
print(IP('192.168.3.0-192.168.3.255', make_net=True))

运行结果:

6、strNormal返回字符串表示

示例代码:

from IPy import IP

ip = IP('192.168.1.250')

# strNormal
# 无返回值
print(IP('192.168.1.0/24').strNormal(0))
# prefix格式
print(IP('192.168.2.0/24').strNormal(1))
# decimalnetmask格式
print(IP('192.168.3.0/24').strNormal(2))
# lastIP格式
print(IP('192.168.4.0/24').strNormal(3))

运行结果:

7、比较两个网段是否重叠和包含

示例代码:

from IPy import IP

# 比较两个网段是否重叠 包含
ip1 = IP('192.168.1.0/24')
ip2 = IP('182.168.1.0/24')
print(ip1)
print(ip2)

# 数值类型的比较
print(ip1 > ip2)

ip3 = IP('192.168.0.0/16')
ip4 = IP('182.168.1.0/24')
print(ip3)
print(ip4)

# 数值类型的比较
print(ip3 > ip4)
print(ip3 == ip4)
print(ip3 < ip4)

运行结果:

8、判断ip和网段包含关系

示例代码:

from IPy import IP

# 判断包含
print(IP('192.168.1.12') in IP('192.168.1.0/24'))
print(IP('192.168.1.0/24') in IP('192.168.0.0/16'))
print(IP('192.167.1.0/24') in IP('192.168.0.0/16'))

运行结果:

9、overlaps判断网段是否重叠

示例代码:

from IPy import IP

# overlaps  1表示重叠 0不存在重叠
print(IP('192.168.0.0/23').overlaps('192.168.1.0/24'))
print(IP('192.168.1.0/24').overlaps('192.168.2.0/24'))

运行结果:

参考博文:

Python自动化遍历IP_博客网友陈浩的博客-CSDN博客_python遍历网段ip

Python3 自动化运维之IPy 网络ip地址管理_筑梦之路的博客-CSDN博客_ip自动化运维 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IPy是一个Python支持IP的各种操作的第三方模块。可以通过使用pip安装IPy模块来使用它,安装命令是 pip install IPyIPy模块提供了很多功能,其一个是通过使用version方法来区分IP地址的版本。可以使用IPy.IP().version()方法来查看一个IP地址的版本。比如,IPy.IP('10.0.0.0/8').version()会返回4,而IPy.IP('::1').version()会返回6。 在完成主机扫描的过程IPy模块也经常被使用来生成IP地址池。可以使用IPy来定义一个函数来生成IP地址池,比如makeIpPool函数。这个函数接受起始IP地址和结束IP地址作为参数,然后使用IPy.IP()和IPy.intToIp()方法来将IP地址转换为整型格式并生成IP地址池。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [一文掌握使用Python的IP处理模块IPy](https://blog.csdn.net/qq_27071221/article/details/124987012)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [python学习—— IPy 强大的IP地址解析模块](https://blog.csdn.net/qq_40909772/article/details/90767800)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值