0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎么使用python提取华为交换机的接口IP信息保存到excel中呢?

网络技术干货圈 来源:CSDN 2024-01-13 16:37 次阅读

实验环境:

85023260-b1ee-11ee-8b88-92fbcf53809c.png

如图所示,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运行结果:

850c53b2-b1ee-11ee-8b88-92fbcf53809c.png

查看Excel上的最终结果:

851b28ce-b1ee-11ee-8b88-92fbcf53809c.png







审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SSH
    SSH
    +关注

    关注

    0

    文章

    177

    浏览量

    16084
  • python
    +关注

    关注

    51

    文章

    4678

    浏览量

    83484
  • 华为交换机
    +关注

    关注

    0

    文章

    13

    浏览量

    6240

原文标题:使用python提取华为交换机的接口IP信息保存到excel中(ensp模拟器)

文章出处:【微信号:网络技术干货圈,微信公众号:网络技术干货圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    [分享]常见网络交换机故障及应用问答

    是否正确,交换机是否正常。若是设置故障,先检查交换机是否设置了IP地址,如果设置了和其他设备不在同一网段的IP地址,将其删除或设一个和其他设备在同一网段的
    发表于 06-02 11:31

    交换机网管系统

    交换机相连,接入到本地局域网交换机数据可经路由器接收发送到网管中心。3、    数据传输的网络通信协议使用TCP/IP协议。4、 
    发表于 06-07 12:34

    交换机和路由器

    方便地用于划分子网,路由器的主要功能就是用于连接不同的网络。 5.保密问题:虽说交换机也可以根据帧的源MAC地址、目的MAC地址和其他帧内容对帧实施过滤,但路由器根据报文的源IP地址、目的I
    发表于 01-08 17:42

    基础知识:理解网络交换机的原理

    域内,也就是说,交换机不隔绝广播(惟一的例外是在配有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

    接入层交换机、汇聚层交换机和核心层交换机的区别

    交换机是三层交换机,高速转发,有大容量接口带宽(比如万兆接口),较大的背板处理能力,因此它的性能以汇聚层交换机和接入层
    发表于 06-04 11:57

    什么是交换机间系统接口(ISSI)

    什么是交换机间系统接口(ISSI) 交换机间系统接口(ISSI: Inter-Switching System Interface) 交换机
    发表于 11-27 08:47 1304次阅读

    交换机接口配置

    交换机接口配置
    发表于 12-27 16:49 0次下载

    华为交换机

    华为交换机
    发表于 03-24 14:17 5次下载

    华为三层交换机如何配置开启WEB网管功能

    配置交换机VLAN接口IP地址,交换机与WEB网管终端间路由可达。配置欲登录的WEB网管用户名和认证口令:第一步:通过 Console口正确配置以太网
    发表于 12-05 17:24 6.2w次阅读
    <b class='flag-5'>华为</b>三层<b class='flag-5'>交换机</b>如何配置开启WEB网管功能

    如何提取Word文档表格保存到Excel

    提取Excel表中。例如,提取word文档中的财务数据、考勤数据等,将数据存储到 Excel表中,本次项目我们专门针对word文档中的表格数据进行解析与
    的头像 发表于 02-24 16:00 2095次阅读
    如何<b class='flag-5'>提取</b>Word文档表格<b class='flag-5'>保存到</b><b class='flag-5'>Excel</b>

    华为交换机如何批量清除接口配置信息

    华为交换机如何批量清除接口配置信息
    的头像 发表于 08-14 10:43 2083次阅读

    使用python批量备份华为交换机配置文件

    保证PC能分别和五台交换机通信。五台交换机IP地址如图上所示。
    的头像 发表于 01-19 09:28 572次阅读
    使用<b class='flag-5'>python</b>批量备份<b class='flag-5'>华为</b><b class='flag-5'>交换机</b>配置文件