从表格中拿出数据,转为老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)

# 读取所有网关,获得网段

 

posted @ 2020-07-10 10:16  trysocket  阅读(117)  评论(0编辑  收藏  举报