举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔知了社区有害的内容
×
不规范转载
×
举报说明
序言:前期AC上配置了这2条命令:wlan auto-ap enable,wlan auto-persistent enable,所有的ap已经自动上线了,真的很舒服,某一天鸟毛客户给了你如下这个excel,叫你给我修改ap的名字,尤其是酒店场景,ap的名字给我换成房间号,该房间所在的ssid也给我换成对应的房间号码,就跟天翼宽带跟酒店合作的机顶盒效果一样,几百个到1W个ap改名字和ssid,真的很痛苦。
那么如何解决这个问题,python自动化上场了,但是也有如下要思考的问题:
1,自动化上线的ap-name是xxxx-xxxx-xxxx小写的格式,而客户提供的excel的MAC数据是靠扫码枪获取,都是XXXXXXXXXXXX连续的大写加数字组合,你得转换excel中MAC的格式
2,打算将MAC地址和房间号封装成一个字典,AP的MAC地址是唯一的,所以字典的键是MAC,值是房间号。无线AP重命名的命令就是这个:
wlan rename-ap ap-name new-ap-name,要求修改后的new-ap-name唯一,但是如果一个房间有2个AP以上时,字典的值就会冲突,为了解决这个问题,先创建2个空列表,一个存放房间号,另一个存放mac地址,利用for循环判断房间号列表中重复次数rooms.count(room)>=2的元素,然后修改列表对应索引的值,思路如下:如果1912房间号有3个AP时,将值修改如下格式:1912-1,1912-2,1912-3,最后利用
ap_rename = {}
for i in range(len(rooms)):
ap_rename.setdefault(ap_macs[i], rooms[i]) # mac
最终脚本结果以txt文档放在笔记本的D盘目录,然后在CRT上ctrl+v复制,几秒之内搞定。
效果展示:
PS:此版本代码有个致命缺点,当某个房间有多个AP时,此时房间号登记的位置必须在excel中的位置连续,这也符合你正常登记的习惯,你收集每个房间的AP的mac时,肯定逐一登记,不可能excel表格的第一行登记7601房间记录,第二行登记7602房间,最后第三行又来登记7601房间的记录,这种错开登记房间号的行为会导致代码输出异常!
今天改写部分代码优化了这种乱序登记房间号行为的excel表格记录:
rooms 列表重写为 ["7601-1", "7602", "7610-1", "7605-1", "7605-2", "7607", "7608", "7610-2", "7610-3", "7601-2"]
ap_rename字典:
{"7057-bfc5-d400": "7601-1", "7057-bfc5-d820": "7602", "7057-bfc5-f640": "7610-1", "7057-bfc5-dae0": "7605-1", "7057-bfc1-66c0": "7605-2",
"7057-bfc1-6b40": "7607", "7057-bfc1-8b00": "7608", "7057-bfc1-c8c0": "7610-2", "7057-bfc1-61c0": "7610-3", "7057-bfc1-f460": "7601-2"}
(2)
对于不懂python的人来说,可以用excel的自动填充功能,依据第一条完整的配置命令自动填充生成所有修改名字和射频信道的脚本,再把excel生成的脚本粘贴到word文档去格式化,再从word文档中复制粘贴到txt文本,这样也是可以的🤪
(0)
暂无评论
第一版有缺陷bug的代码分享一下吧,要求是excel中登记的一样的房间号要连续登记,不能乱登记!
import openpyxl as xl
import sys
import re
class Logger(object):
def __init__(self, fileN="Default.log"):
self.terminal =
sys.stdout
self.log = open(fileN, "a")
def write(self, message):
self.terminal.write(message)
self.log.write(message)
def flush(self):
pass
sys.stdout =
Logger("D:\\wlan_apname.txt") # 将输出结果保存到D盘
wb = xl.load_workbook('wlan_aps.xlsx') # 加载一个wlan_aps.xlsx的excel文件
sheet = wb['Sheet1'] # 工作表名Sheet1
messages =
[] # room房间号初始化为空列表
ap_maces = [] # ap的mac地址初始化为空列表
for row in range(3, sheet.max_row + 1): # 确定行数范围从3到max_row
#
-----------------------------------------------------------------------
# Func Name : Automated script to modify ap name
# Date Created : 2020-03-18
# Author : H3CTE--3771
# History :
# Date Author Modification
#
------------------------------------------------------------------------
room_cell =
sheet.cell(row, 3)
mac_address_cell = sheet.cell(row, 4)
room = str(room_cell.value)
mac_values = mac_address_cell.value
mac_add = re.compile(r'(\w\w\w\w)(\w\w\w\w)(\w\w\w\w)')
mac = mac_add.search(mac_values)
# print(mac.group())
new_ap_mac =
(mac.group(1) + '-' + mac.group(2) + '-' + mac.group(3)).lower()
# print(new_ap_mac)
messages.append(room) # 将房间号组成一个列表
ap_maces.append(new_ap_mac)
for rooms in messages:
if messages.count(rooms)
>= 2: # 找出messages列表中重复2次以上的房间号rooms
i =
messages.count(rooms)
index = messages.index(rooms)
for ii in range(i):
messages[index + ii] = '{}-{}'.format(rooms, ii + 1)
# 更新rooms重复的元素的值,比如重复3次,则rooms值更换为rooms-1,rooms-2,rooms-3
ap_rename = dict(zip(ap_maces, messages))
def wlan():
for message in messages:
print(f'wlan
service-template {message[:4]}')
print(" undo
service-template enable")
print(" " + f'ssid {message[:4]}')
print(" " + "vlan
68")
print(" " + "client
association-location ap")
print(" " + "client
forwarding-location ap")
print("vlan
68")
print(" " + "client-security
authentication-location ap")
print(" " + "service-template
enable")
for k, v in ap_rename.items():
print(f'wlan rename-ap
{k} {v}')
print(f'wlan ap {v}')
print(' radio 1')
print(' radio disable')
print(f'
service-template {v[:4]}')
print(' radio enable')
if __name__ == '__main__':
wlan()
(0)
暂无评论
官方自带神器vbs,
可实现百万AP的 名字,序列号,信道,服务模板,以及其他精确配置的excel,
转换为可以直接粘贴的txt脚本,
搞个python针对性太高
(1)
暂无评论
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
暂无评论