from concurrent.futures import ThreadPoolExecutor
import netmiko
import os
from threading import Lock
import pandas as pd
from textfsm import TextFSM
import time class net_dev(): def __init__(self,excel_name):
try :
os.mkdir("./log")
except:
pass
self.excel_name = excel_name
self.list = [] # 空列表存储设备信息数据
self.pool = ThreadPoolExecutor(10) # 初始化线程数量
self.lock = Lock() # 添加线程锁,避免写入数据丢失
self.path = ("./log") # 创建保存log路径
def get_dev_info(self):
# 获取设备信息dataframe
dataframe = pd.read_excel(self.excel_name,sheet_name="设备信息")
#print(dataframe)
self.list = dataframe.to_dict(orient="records") # 将数据变为列表
print(self.list) def textfsm_1(self):
path = r'C:\Users\17160\PycharmProjects\yc_project\高级textfsm_study\\'
ntc_templates_path = r'C:\Users\17160\PycharmProjects\yc_project\高级textfsm_study\ntc-templates\\'
result_path = r'C:\Users\17160\PycharmProjects\yc_project\高级textfsm_study\输出结果\\' ntc_file = "cisco_show_interface" # 使用模板名字 result_excel_name = ntc_file + ".xlsx"
os.chdir(path)
# 新建一个test.xlsx文件
df_tmp = pd.DataFrame(data=None)
with pd.ExcelWriter(str(result_path) + result_excel_name, mode="w") as writer:
df_tmp.to_excel(writer, sheet_name="sheet1", index=False)
success_ip = ["YCMBOSS.YUX.6509.SW1","YCMBOSS.YUX.6509.SW2"]
for ip in success_ip:
with open(r'C:\Users\17160\PycharmProjects\yc_project\高级textfsm_study\log\\' + str(ip) + '.txt', "r",
encoding="utf-8") as file:
str1 = str(file.read())
info = TextFSM(open(str(ntc_templates_path) + ntc_file )).ParseText(
str1) # 使用textfsm模板
header = (TextFSM(open(str(ntc_templates_path) + ntc_file )).header) # testfsm获取头部
data = info
df = pd.DataFrame(data, columns=header)
print(df) with pd.ExcelWriter(str(result_path) + result_excel_name, mode="a") as writer:
df.to_excel(writer, sheet_name=str(ip), index=False) yc_use = net_dev("设备信息.xlsx")
yc_use.get_dev_info()
yc_use.textfsm_1()

textfsm的更多相关文章

  1. Python模块之netmiko

    一.简介 此模块用于简化paramiko与网络设备之间的ssh连接,可在windows与Unix平台使用 二.目前支持的设备 (2019.03.07) Regularly tested Arista ...

随机推荐

  1. 最新版 Proteus 8.15 Professional 图文安装教程 [ 附安装包 ]

    前言 Proteus 是世界上唯一将电路仿真软件.PCB设计软件和虚拟模型仿真软件三合一的设计平台. Proteus 8.15 现已发布,本篇将带领大家安装此版本. 介绍 Proteus Proteu ...

  2. prettier+ts+eslint+vscode配置代码保存自动格式化,自动remove unsed declaration,delete no-unused-imports

    每天都要开心(▽)哇: 以这个项目为案例 下面是项目的基本情况 What would you like to build? › App with Quasar CLI, let's go! Proje ...

  3. Vue导出模板、使用前端js办法导出表格数据、导入表格前端读取表格数据、导入表格发送后端读取数据

    以下是几种用的较多的函数方法,可以参考使用. // 導出1 myExport() { // post請求文件寫法1 const url = 'http://XXXX/XXXX/XXXX/XXXX' c ...

  4. three.js一步一步来--如何用线画出一个面--网格板子

    网格板子~~~ <template> <div style="width:1000px; height:800px"> <p>网格布局</ ...

  5. C# 线程查漏补缺

    进程和线程 不同程序执行需要进行调度和独立的内存空间 在单核计算机中,CPU 是独占的,内存是共享的,这时候运行一个程序的时候是没有问题.但是运行多个程序的时候,为了不发生一个程序霸占整个 CPU 不 ...

  6. Node.js学习笔记----day02

    认真学习,认真记录,每天都要有进步呀!!! 加油叭!!! 一.简单实现Apache功能 var http = require('http') var fs = require('fs') // 1. ...

  7. FreeBSD 安装 fcitx5的配置

    link: Chinese Pinyin Package for typing Chinese sudo pkg install -y zh-CJKUnifonts sudo pkg install ...

  8. 谈谈Selenium中的三种切换之alert

    谈谈Selenium中的三种切换之alert 一.如何识别 识别方法:alert中的确定.取消.输入框无法用inspector定位到,当然还有一些特例. alert分为三种 alert confirm ...

  9. P29_全局配置 - window - 导航栏

    window 了解 window 节点常用的配置项 设置导航栏的标题 设置步骤:app.json -> window -> navigationBarTitleText 需求:把导航栏上的 ...

  10. IDEA新手使用教程【详解】

    IDEA是一款功能强悍.非常好用的Java开发工具,近几年编程开发人员对IDEA情有独钟. Intellij Idea使用技巧总结 1.如何设置通过鼠标滑轮改变编辑器字体大小 2.如何设置自动导包功能 ...