微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决从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 举报,一经查实,本站将立刻删除。