textfsm
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的更多相关文章
- Python模块之netmiko
一.简介 此模块用于简化paramiko与网络设备之间的ssh连接,可在windows与Unix平台使用 二.目前支持的设备 (2019.03.07) Regularly tested Arista ...
随机推荐
- c++ 递推算法
各位大佬不妨先点个赞再看文章! 递推法是一种重要的数学方法,在数学的各个领域中都有广泛的运用,也是计算机用于数值计算的一个重要算法.这种算法特点是:一个问题的求解需一系列的计算,在已知条件和所求问题之 ...
- RESTful相关信息整理
RESTful相关信息整理 参考:可以看的出来我是阮一峰的忠实读者 阮一峰的<理解RESTful架构> https://www.ruanyifeng.com/blog/2011/09/re ...
- oasys系统_JAVA代码审计
oasys系统_JAVA代码审计 一.前言 oasys是一个OA办公自动化系统,使用Maven进行项目管理,基于springboot框架开发的项目.可以看到该项目的资源文件中是mappers且pom. ...
- 2211-14MongoDB学习
学习资源来自菜鸟教程 MongoDB数据库 MongoDB概念解析 不管我们学习什么数据库都应该学习其中的基础概念,在mongodb中基本的概念是文档.集合.数据库,下面我们挨个介绍. 下表将帮助您更 ...
- 【DS】2.1
线性表:c++各种基础操作里面,有&没&避免错的代码额~ #include <stdio.h> void test(int &x){//没有&就没有带回主函 ...
- Eureka+SpringCloud微服务(入门一)
项目地址 [CloudStudy项目](zko0/cloudStudy: Springcloud学习工程 (github.com)) 1.依赖版本 cloud:Hoxton.SR1 boot:2.2. ...
- vivo版本发布平台:带宽智能调控优化实践-平台产品系列03
vivo 互联网平台产品研发团队 - Peng Zhong 随着分发规模地逐步增长,各企业对CDN带宽的使用越来越多.并且,各类业务使用CDN的场景各式各样,导致带宽会不断地出现骤增骤降等问题.基于成 ...
- ClickHouse使用笔记
什么是ClickHouse? ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS). 更多说明请参考官网:https://clickhouse.com/docs/zh/ ...
- 依那西普减量维持过程中RA病人自报病情复发可能预示未来放射学进展[EULAR2015_SAT0147]
依那西普减量维持过程中RA病人自报病情复发可能预示未来放射学进展 SAT0147 SELF-REPORTED FLARES PREDICT RADIOGRAPHIC PROGRESSION IN ...
- js(最新)手机号码 正则验证 - 代码篇
现在手机号码,除了以11+.12+开头的没有,别的好像都有了! 代码如下: 方法一: function checkPhone(){ var phone = $(".phone"). ...