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. vscode快速删除空白行方法

    1.快速打开替换界面,在Find界面输入^\s*(?=\r?$)\n 2.Alt+R选择Use Regular Expression(Alt+R)即正则表达式模式: 3.选择Replace All(C ...

  2. ffmpeg拉取rtsp视频流

    公司项目需要提供实时显示网络摄像头实时视频. void RTSPFFmpeg::rtsp_open(const char *url) { AVFormatContext* format_ctx = a ...

  3. 你想成为.Net 7的技术高手吗?来这里看看

    前言: 你是否时常觉得,整天搞些Curd和增删改查.这些毫无意义的东西,完全是浪费生命.想要进阶,成为高手.却苦于找不到方法,没有一套系统性的东西. 有鉴于此,新建了一个群,方便大家一起交流和分享一些 ...

  4. get请求与post请求的区别

    大小限制 get请求一般通过url传输的数据量时比较少的,最多传3~5个参数,如果要传递多个参数,要在url地址中利用"&"符号拼接多个参数, 栗子:/test/demo. ...

  5. 在 Asp.Net Core 中什么是认证和授权

    认证(Authentication) 和 授权(Authorization)在 Asp.Net core 充当了两个不同的职责.有的老伙计在理解的时候还存在误解.本文我们将会通过一些简单的例子来说明这 ...

  6. P5192 Zoj3229 Shoot the Bullet|东方文花帖|【模板】有源汇上下界最大流

    我们要做这道题首先先来学习: 无源汇上下界可行流 什么是无源汇上下界可行流 在一张图中,没有s和t,每条边有流量下界和流量上界,流量在这个区间内,求是否存在一种方案在满足流量平衡的情况下,使所有边满足 ...

  7. 0源码基础学习Spring源码系列(一)——Bean注入流程

    作者:京东科技 韩国凯 通过本文,读者可以0源码基础的初步学习spring源码,并能够举一反三从此进入源码世界的大米! 由于是第一次阅读源码,文章之中难免存在一些问题,还望包涵指正! 一. @Auto ...

  8. FreeRTOS使用汇总

    /**********创建任务**************/ TaskHandle_t Hardware_TaskHandle; //任务句柄,如果不用到消息,可不用句柄 void main (voi ...

  9. slate源码解析(一)- 序言

    笔者从大学时期就开始接触的前端,在刚去实习的时候就被导师安排去做内网的一个小富文本工具.之后从毕业后干的第一份工作游戏客户端,到现在做着可视化相关的前端工作,都有在做富文本相关的内容.可以说是和富文本 ...

  10. JZOJ 3252. 【GDOI三校联考】炸弹

    思路 注:上图只是个例子,其实建图时 \(5\) 是不会连向 \(6\) 的 \(Code\) #include<cstdio> #include<cstring> #incl ...