实验环境:


如图所示,SW1-SW5上分别已经配置了SSH,使用外部PC可以SSH到其中。

在本次实验中,主要使用了如下三个模块:

  1. openpyxl,对excel文件进行操作,具体可以参考:https://zhuanlan.zhihu.com/p/317826761
  2. gevent,使用协程,同时对五台设备进行操作,可以参考:https://blog.csdn.net/tushanpeipei/article/details/116612802?spm=1001.2014.3001.5501
  3. napalm-huawei-vrp,SSH到交换机,并提取格式化信息,可以参考:https://blog.csdn.net/tushanpeipei/article/details/117531627?spm=1001.2014.3001.5501

python代码:

from napalm import get_network_driver
from openpyxl import Workbook
from openpyxl.styles import Color, PatternFill, Font, Border, Side
import gevent
from gevent import monkey
from pprint import pprintmonkey.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']def collect_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命名的sheetws = wb.create_sheet(hostname)# 设置此sheet中记录数据的类别ws['A1'] = 'Interfaces'ws['B1'] = 'IP'ws['C1'] = 'Mask'# 设置背景颜色ws['A1'].fill = fillws['B1'].fill = fillws['C1'].fill = fill# 创建要写入数据的列表interfaces_list = []ip_addr_list = []mask_list = []# 根据pprint(interfaces_ip_info)的打印信息,进行处理,提取接口名称、IP地址、MASK保存到当前sheet中for key, values in interfaces_ip_info.items():interfaces_list.append(key)for ip, mask in values['ipv4'].items():ip_addr_list.append(ip)mask_list.append(mask.get('prefix_length'))# 得到插入数据的行数,n+2的原因是因为range是左开右闭,并且excel的第一行也已经写入了数据类型(A1、B1、C1)row_numbers = [n + 2 for n in range(len(interfaces_list))]# 对excel当前sheet中指定的cell进行赋值for interface, row in zip(interfaces_list, row_numbers):ws.cell(row=row, column=1, value=interface)for ip_addr, row in zip(ip_addr_list, row_numbers):ws.cell(row=row, column=2, value=ip_addr)for mask, row in zip(mask_list, row_numbers):ws.cell(row=row, column=3, value=mask)# 调整列的宽度(自适应数据长度),保证excel文件的美观性,首先创建一个名为dims的空字典dims = {}# ws1.rows返回值的类型为生成器generator,其中包含每一排和每一列有交集的所有单元格# (每一排中至少有一个单元格为非空),比如(A1,B1), (A2,B2), (A3,B3)for row in ws.rows:# 遍历每一排元组里的每一个元素(即单元格A1,B1,A2,B2,A3,B3)for cell in row:# 为每一个单元添加边框cell.border = border# 如果单元格内容为非空,则用max()比较每一列下最长的字符,比如从A1和A2,A3相比较,B1和B2,B3相比较if cell.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以确保列的宽度超过最长单元格的宽度for col, value in dims.items():ws.column_dimensions[col].width = value + 1except Exception as e:print(e)print("end:", ip)if __name__ == '__main__':# 调用Openpyxl创建Workbook对象,用来创建一个workbook,并将它赋值给变量wbwb = 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) for ip in devices_ip]all_result = gevent.joinall(tasks)# 删除掉默认的Sheetws = wb["Sheet"]wb.remove(ws)# 查看存在哪些表print(wb.sheetnames)# 保存excel信息wb.save('huawei_interface_ip_info.xlsx')

pycharm运行结果:

查看Excel上的最终结果:


参考资料:
网络工程师的Python之路—https://zhuanlan.zhihu.com/p/317826761

使用python提取华为交换机的接口IP信息保存到excel中(ensp模拟器)相关推荐

  1. Python爬取中国大学排名,并且保存到excel中

    前言 以下文章来源于数据分析和Python ,作者冈坂日川 今天发的是python爬虫爬取中国大学排名,并且保存到excel中,当然这个代码很简单,我用了半小时就写完了,我的整体框架非常清晰,可以直接 ...

  2. python计算两地之间的开车时间,保存到Excel中

    文章目录 一.去[百度地图开发平台](https://lbsyun.baidu.com/apiconsole/key/create#/home)申请API的AK 二.代码 三.效果 四.生成可执行的e ...

  3. python提取pdf表格数据并保存到excel中

    pdfplumber操作pdf文件 python开源库pdfplumber,可以较为方便地获取pdf的各种信息,包含pdf的基本信息(作者.创建时间.修改时间-)及表格.文本.图片等信息,基本可以满足 ...

  4. python提取txt数据到excel_python 读取txt中每行数据,并且保存到excel中的实例

    使用xlwt读取txt文件内容,并且写入到excel中,代码如下,已经加了注释. 代码简单,具体代码如下: # coding=utf-8 ''' main function:主要实现把txt中的每行数 ...

  5. Python实现分析pdf或者Word形式简历,并且保存到Excel中

    Python实现分析当前文件夹里面所有的pdf或者Word形式简历,并且保存到Excel中 # -*- coding:utf-8 -*-#作者:公众号:湾区人工智能 #功能:实现分析pdf或者Word ...

  6. Python爬取URP教务系统课程表并保存到excel

    Python爬取URP教务系统课程表并保存到excel 爬取URP教务系统课程表最终结果如图所示: 接下来开始操作: 首先打开教务系统->按F12->点击Network->刷新一下界 ...

  7. Python爬虫鲁迅先生《经典语录》保存到Excel表格(附源码)

    Python爬虫鲁迅先生<经典语录>保存到Excel表格(附源码) 前言 今天用Python 爬取鲁迅先生<经典语录>,直接开整~ 代码运行效果展示 开发工具 Python版本 ...

  8. 调用API接口登录后,获取用户信息保存到Vuex中并渲染到Vue页面

    文件封装 步骤 核心请求文件 在 apiUse 文件夹中的 index.js 文件写 API接口方法 baseURL + url 后台完整地址 将信息写入 store 文件夹中的 index.js 文 ...

  9. python逐行读取txt写入excel_python 读取txt中每行数据,并且保存到excel中的实例

    使用xlwt读取txt文件内容,并且写入到excel中,代码如下,已经加了注释. 代码简单,具体代码如下: # coding=utf-8 ''' main function:主要实现把txt中的每行数 ...

最新文章

  1. 用Python分析为什么在中国没学历的外教为啥能拿几万高薪?
  2. 三十二、电子商务服务推荐模型构建
  3. 洛谷 - P2324 - 骑士精神 - A*搜索
  4. 大前端的自动化工厂(2)—— SB Family
  5. python房地产爬虫_房产中介网站爬虫实战(Python BS4+多线程)(一)
  6. python 窗口控件变大变小_详解:用Python+AutoIt实现界面工具开发过程
  7. Hive的Map Join与Common Join
  8. Diy页面服务端渲染解决方案
  9. 表达式int('2222',4)的值是多少?(每日一题)
  10. Android 简单实现控件的拖动
  11. php必填参数校验,laravel请求参数校验方法
  12. 03C++语言对C的增强——实用性、变量检测、struct类型、C++中所有变量和函数都必须有类型、bool类型、三目运算符...
  13. windows配置java环境变量
  14. 学习《自己动手写网络爬虫》之记录1
  15. 爬虫python下载电影_python爬虫--爬取某网站电影下载地址
  16. 用python做产出数据分析案例_利用python进行数据分析——医院销售额案例
  17. [基础]tfcenter搭建个人服务器
  18. 前端多语言开发,如何中英文切换
  19. 《地球概论》(第3版)笔记 第二章 地球的宇宙环境
  20. web前端设计与开发期末作品/期末大作业:我的家乡——走进达州(4页) HTML+CSS+JavaScript

热门文章

  1. kotlin与go性能_比较Kotlin性能与Graal和C2
  2. 程序员们,曾经是否有个bug让你开始怀疑人生
  3. C 语言重来29:例题赏析——给定条件的整数集
  4. TensorFlow 基于 Python 的机器学习框架
  5. windows查看端口号,查看端口号占用情况,杀掉端口
  6. 【爬虫】关于 HTTP 的 OPTIONS 请求
  7. 教你如何选购一款适合自己的数码相机
  8. LifeCycle速成
  9. win10开始菜单锁定计算机,win10系统任务栏锁定功能应用的方案
  10. 夏天面试男生穿什么_夏天什么时候?