import IPy
import openpyxl
import xlwt
# 目的:xlsx中(网关)(掩码)返回所有网段
"""
192.168.128.1/29
掩码29标识划2113分了子网
11111111.11111111.11111111.11111000 255.255.255.248 掩码
网络位29个1, 主机位3个0
"""
# 打开旧薄
wb = openpyxl.load_workbook('all_ip.xlsx')
# 打开表
ws = wb.worksheets[0]
# 创建一个xls表
workbook = xlwt.Workbook(encoding='utf-8')
table = workbook.add_sheet('第一个表')
# 所有网段
A = []
# 计算所有网段
# ws["D"]遍历一列
# 这里是遍历行
for col in ws.rows:
print(col[0].value,">>>>>>>>>",col[1].value,col[2].value)
temp1 = str(col[1].value)
temp2 = str(col[2].value)
a = IPy.IP(temp1).make_net(temp2)
# {网点:网段}
A.append({col[3].value:a})
print("================分割线=====================")
# A = 【{192.168.128.1/24 :地址},{},{}】
# 行计数
x1 = 1
for i in A:
# i = {{192.168.128.1/24 :地址}}
for a,b in i.items():
# a,b = 网点,10.167.183.240/29
x = 1 # 计数器,每次回来清0
for i2 in b:
# i2 = ip
if x ==1: # 网段中第一个为主机号
table.write(x1, 1,a)
table.write(x1, 2,str(i2))
table.write(x1, 3,'网络地址')
print(a,'>>>>>',i2,'网络地址')
elif x == 2:
table.write(x1, 1, a)
table.write(x1, 2,str(i2))
table.write(x1, 3,'网关')
print(a,'>>>>>',i2,'网关')
elif len(b) == x:
table.write(x1, 1, a)
table.write(x1, 2,str(i2))
table.write(x1, 3,'广播地址')
print(a,'>>>>>',i2,'广播地址')
else:
table.write(x1, 1, a)
table.write(x1, 2, str(i2))
table.write(x1, 3, '')
print(a,'>>>>>',i2,'')
x+=1
x1+=1
workbook.save('all_ipip.xls')
# x = IPy.IP("ip").make_net("掩码")返回所有网段 ip最好写网关
# x = IPy.IP("10.167.184.193").make_net("255.255.255.192")
# # 在x 中第一个网络地址不能用,最后一个广播地址不能用
# print('>>>',x)
#
# for i in x:
# print(i)
# 读取所有网关,获得网段