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. 内存概述-java虚拟机的内存划分

    内存概述 内存是计算机中的重要原件,临时存储区域,作用是运行程序,我们编写写的程序是存放在硬盘中的,在硬盘中的程 序是不会运行的,必须放进内存中才能运行,运行完毕后会清空内存. Java虚拟机要运行程 ...

  2. Linux防火墙部署与配置

    Linux防火墙部署与配置 1. 实验概述 Linux作为网关,搭建小型局域网,在此基础上进行实验,了解Linux防火墙的构成.NAT和包过滤配置方法等. 2. 实验环境 网络大致结构如图2-1所示, ...

  3. 【笔记向】RESTful api

    RESTful api 是什么 源自论文:点我,中文版 Representational state transfer: Representational:数据表现形式 state:状态 transf ...

  4. springcloud04 Ribbbon

    Ribbbon虽然现在已经进入维护模式了,但是使用的还是很多的. 1.官网 https://github.com/Netflix/ribbon/wiki/Getting-Started 2.Ribbo ...

  5. 2022.2.1最新版本的IDEA

          一.下载破解工具.激活码 激活工具下载链接:https://note.youdao.com/s/1ANz2F3o   6G5NXCPJZB-eyJsaWNlbnNlSWQiOiI2RzVO ...

  6. 学习Java Day8

    今天学习了for循环,与C语言几乎无差异: 也学习了while和do while循环 今天学习了for循环,与C语言几乎无差异: 也学习了while和do while循环

  7. 鼎阳SDS6204长波形读取的潜力挖掘及上海光源测试

    ​​​ https://blog.csdn.net/weixin_43767046/category_11089525.html 上学期我搭建起来的逐束团3维质心位置测量系统一直是获取500us长的一 ...

  8. 基于minikube快速搭建kubernetes单节点环境

    一.说明 本文主要介绍在 Centos7 环境下基于 Minikube 来快速部署 Kubernetes 单节点集群环境,并在浏览器上访问部署在 k8s 上的 dashboard 服务. 二.Mini ...

  9. 另类数据获取法-eax法

    有些基址非常难追 所以我们用一个另类的方法来追一下 复杂的汇编代码 ------------------ call 0x****** mov esi,eax; mov ***, dword ptr d ...

  10. TCP/IP协议(8): ICMP(Internet Control Message Protocol) 协议 ——诊断和控制 IP 协议层

    TCP/IP协议(8): ICMP(Internet Control Message Protocol) 协议 --诊断和控制 IP 协议层 关于网际控制报文协议(Internet Control M ...