从CIDR打印IP地址列表,起始地址并不总是.0

问题描述

我需要有关创建脚本的帮助,该脚本将处理具有IP和网络名称文件。 例子:

输入:192.168.1.0/24

输出

192.168.1.0,NetworkName

192.168.1.2,网络名称

192.168.1.3,NetworkName

等...

192.168.1.255,NetworkName

输入:72.44.22.32/26

72.44.22.33,NetworkName

72.44.22.34,NetworkName

72.44.22.35,NetworkName

等...

72.44.22.95,NetworkName

到目前为止,这还不只是浏览互联网并尝试修改一些代码

import struct,socket
file = open('cidr')
def ips(start,end):
    start = struct.unpack('>I',socket.inet_aton(start))[0]
    end = struct.unpack('>I',socket.inet_aton(end))[0]
    return [socket.inet_ntoa(struct.pack('>I',i)) for i in range (start,end)]

for x in file:
    #formating Section
    y=x.strip("\"")
    list2=y.split(",",2)
    name=list2.pop(1)
    ipcidr=list2.pop(0)
    list3=ipcidr.split("/",1)
    #seperating the IP and CIDR 
    cidr= list3.pop(1)
    ip= list3.pop(0)
    cidr = int(cidr)
    start = (i >> cidr) << cidr # shift right end left to make 0 bits
    end = i | ((1 << cidr) - 1) # or with 11111 to make highest number
    start = socket.inet_ntoa(struct.pack('>I',start)) # real ip address
    end = socket.inet_ntoa(struct.pack('>I',end))
    ips(start,end) 

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)