Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Python中的CIDR列表生成所有可能的IP?_Python_Ip_Converter_Generator_Cidr - Fatal编程技术网

如何从Python中的CIDR列表生成所有可能的IP?

如何从Python中的CIDR列表生成所有可能的IP?,python,ip,converter,generator,cidr,Python,Ip,Converter,Generator,Cidr,假设我有一个文本文件包含一组cidr ip范围,如下所示: x.x.x.x/24 x.x.x.x/24 x.x.x.x/23 x.x.x.x/23 x.x.x.x/22 x.x.x.x/22 x.x.x.x/21 然后继续 如何将这些cidr符号转换为Python新文本文件中所有可能的ip列表?基于 导入结构,套接字 def ips(开始、结束): start=struct.unpack('>I',socket.inet_aton(start))[0] end=struct.unpack('>

假设我有一个文本文件包含一组cidr ip范围,如下所示:

x.x.x.x/24
x.x.x.x/24
x.x.x.x/23
x.x.x.x/23
x.x.x.x/22
x.x.x.x/22
x.x.x.x/21
然后继续

如何将这些cidr符号转换为Python新文本文件中所有可能的ip列表?

基于

导入结构,套接字
def ips(开始、结束):
start=struct.unpack('>I',socket.inet_aton(start))[0]
end=struct.unpack('>I',socket.inet_aton(end))[0]
返回[socket.inet_ntoa(struct.pack('>I',I)),用于范围内的I(开始,结束)]
#ip/CIDR
ip='012.123.234.34'
CIDR=10
i=结构解包('>i',socket.inet_aton(ip))[0]#编号
# 175893026

start=(i>>CIDR)如果您不需要从头开始编写脚本,可以使用python-cidrize包。

您可以使用netaddr。下面的代码将在您的磁盘上创建一个文件,并用请求块中的每个ip地址填充该文件:

from netaddr import *

f = open("everyip.txt", "w")
ip = IPNetwork('10.0.0.0/8')

for addr in ip:
    f.write(str(addr) + '\n')

f.close()

@brbcoding的可能副本根本不存在。这个问题是“从cidr列表生成所有可能的ip”,这个问题是“将cidr列表转换为ip范围列表”。“IP范围”和“可能IP”不是一回事。它们是完全不同的东西。IP范围类似于“x.x.x.x-y.y.y.y”,但可能的IP列表是由符号生成的每个IP。恐怕您会将CIDR误认为是主机位数。你的代码输出错误。如果我弄错了,我该如何改进?是否要编辑代码,使其正常工作?是否应该是
CIDR=32-10
?是的,您可以使用
192.168.1.1/24
进行验证。
from netaddr import *

f = open("everyip.txt", "w")
ip = IPNetwork('10.0.0.0/8')

for addr in ip:
    f.write(str(addr) + '\n')

f.close()