使用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'))
运行结果:
参考博文: