实验环境:
如图所示,SW1-SW5上分别已经配置了SSH,使用外部PC可以SSH到其中。
在本次实验中,主要使用了如下三个模块:
openpyxl,对excel文件进行操作。
gevent,使用协程,同时对五台设备进行操作。
napalm-huawei-vrp,SSH到交换机,并提取格式化信息。
python代码:
fromnapalmimportget_network_driver fromopenpyxlimportWorkbook fromopenpyxl.stylesimportColor,PatternFill,Font,Border,Side importgevent fromgeventimportmonkey frompprintimportpprint monkey.patch_all() #设置模板为华为的vrp操作系统 driver=get_network_driver('huawei_vrp') #定义5台设备的IP地址,如果IP过多的话,可以通过数据库或者txt文件保存并读取 devices_ip=['192.168.0.11','192.168.0.22','192.168.0.33','192.168.0.44','192.168.0.55'] defcollect_basic_info(ip,fill,border): print("start:",ip) try: SW=driver(ip,'prin','Huawei@123') SW.open() print(ip+'连接成功') #获取设备基础信息 basic_info=SW.get_facts() #pprint(basic_info) #提取其中的hostname信息 hostname=basic_info.get('hostname') #获取设备接口三层信息 interfaces_ip_info=SW.get_interfaces_ip() #pprint(interfaces_ip_info) #返回设备名称和接口IP信息 #在excel文件中,创建以hostname命名的sheet ws=wb.create_sheet(hostname) #设置此sheet中记录数据的类别 ws['A1']='Interfaces' ws['B1']='IP' ws['C1']='Mask' #设置背景颜色 ws['A1'].fill=fill ws['B1'].fill=fill ws['C1'].fill=fill #创建要写入数据的列表 interfaces_list=[] ip_addr_list=[] mask_list=[] #根据pprint(interfaces_ip_info)的打印信息,进行处理,提取接口名称、IP地址、MASK保存到当前sheet中 forkey,valuesininterfaces_ip_info.items(): interfaces_list.append(key) forip,maskinvalues['ipv4'].items(): ip_addr_list.append(ip) mask_list.append(mask.get('prefix_length')) #得到插入数据的行数,n+2的原因是因为range是左开右闭,并且excel的第一行也已经写入了数据类型(A1、B1、C1) row_numbers=[n+2forninrange(len(interfaces_list))] #对excel当前sheet中指定的cell进行赋值 forinterface,rowinzip(interfaces_list,row_numbers): ws.cell(row=row,column=1,value=interface) forip_addr,rowinzip(ip_addr_list,row_numbers): ws.cell(row=row,column=2,value=ip_addr) formask,rowinzip(mask_list,row_numbers): ws.cell(row=row,column=3,value=mask) #调整列的宽度(自适应数据长度),保证excel文件的美观性,首先创建一个名为dims的空字典 dims={} #ws1.rows返回值的类型为生成器generator,其中包含每一排和每一列有交集的所有单元格 #(每一排中至少有一个单元格为非空),比如(A1,B1),(A2,B2),(A3,B3) forrowinws.rows: #遍历每一排元组里的每一个元素(即单元格A1,B1,A2,B2,A3,B3) forcellinrow: #为每一个单元添加边框 cell.border=border #如果单元格内容为非空,则用max()比较每一列下最长的字符,比如从A1和A2,A3相比较,B1和B2,B3相比较 ifcell.value: #cell.column_letter返回的值是单元格所在的列的名称,其数据类型为字符串,比如A1,A2,A3返回'A',B1,B2,B3则返回'B'。 #第一次故意用dims.get(cell.column,0)返回一个0,因为此时dims字典下还没有cell.column这个键名, #字典的的get()函数在键名缺失的情况下会返回第二个我们给定的参数,即这里的0。 dims[cell.column_letter]=max((dims.get(cell.column_letter,0),len(str(cell.value)))) #遍历字典里的键值对,以每一排宽度最长的单元格作为自动调整单元格长度的标准, #长度+1以确保列的宽度超过最长单元格的宽度 forcol,valueindims.items(): ws.column_dimensions[col].width=value+1 exceptExceptionase: print(e) print("end:",ip) if__name__=='__main__': #调用Openpyxl创建Workbook对象,用来创建一个workbook,并将它赋值给变量wb wb=Workbook() #定义表格中的背景颜色和样式 yellowFill=PatternFill(start_color='FFFF00',end_color='FFFF00',fill_type='solid') thin_border=Border(left=Side(style='thin'),right=Side(style='thin'),top=Side(style='thin'), bottom=Side(style='thin')) #同时执行5个任务 tasks=[gevent.spawn(collect_basic_info,ip,yellowFill,thin_border)foripindevices_ip] all_result=gevent.joinall(tasks) #删除掉默认的Sheet ws=wb["Sheet"] wb.remove(ws) #查看存在哪些表 print(wb.sheetnames) #保存excel信息 wb.save('huawei_interface_ip_info.xlsx')
pycharm运行结果:
查看Excel上的最终结果:
审核编辑:刘清
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
SSH
+关注
关注
0文章
188浏览量
16335 -
python
+关注
关注
56文章
4792浏览量
84627 -
华为交换机
+关注
关注
0文章
13浏览量
6307
原文标题:使用python提取华为交换机的接口IP信息保存到excel中(ensp模拟器)
文章出处:【微信号:网络技术干货圈,微信公众号:网络技术干货圈】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
基础知识:理解网络交换机的原理
域内,也就是说,交换机不隔绝广播(惟一的例外是在配有VLAN的环境中)。 3.交换机依据帧头的信息进行转发,因此说交换机是工作在数据链路
发表于 04-13 14:30
交换机接口类型,交换机各种类型接口图片及介绍
交换机接口及连接图解交换机在我们的印象中是作为局域网节点连接的网络设备,其实它也在广域网中存在,并且得到大量应用,特别是电信运营企业
发表于 05-03 23:05
华为路由器交换机VLAN配置实例
华为路由器交换机VLAN配置实例[hide]华为路由器交换机VLAN配置实例使用4台PC(pc多和少,原理是一样的,所以这里我只用了4台pc),华为
发表于 05-25 00:21
交换机VLAN是如何实现的
交换机自动配置Port为主机所属的VLAN。这里有三种分类:基于MAC,基于IP,基于用户 3、基于MAC的VLAN(例如二层交换机) 将所有主机的硬件地址都加入到VALN的管理数据库
发表于 01-12 16:16
什么是交换机间系统接口(ISSI)
什么是交换机间系统接口(ISSI)
交换机间系统接口(ISSI: Inter-Switching System Interface)
交换机
发表于 11-27 08:47
•1418次阅读
交换机怎么配置IP地址
在构建和管理网络架构中,交换机作为核心设备之一,其IP地址的配置是确保网络正常运行的重要步骤。正确配置交换机的IP地址,可以使得网络设备
使用Python脚本备份华为交换机的配置信息
在现代网络管理中,备份交换机的配置信息是一项至关重要的任务。备份可以确保在交换机发生故障或配置错误时,能够迅速恢复到之前的工作状态。本文将详细介绍如何使用
评论