从表格中拿出数据,转为老xls,IP计算网段
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) # 读取所有网关,获得网段