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