netmiko批量操作网络设备_pandas版
from concurrent.futures import ThreadPoolExecutor
import netmiko
import os
from threading import Lock
import pandas as pd 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路径
self.mult_config=[] # 创建列表,保存多条命令。用于批量执行命令 def get_dev_info(self):
# 获取sheet(设备信息)的dataframe.
df = pd.read_excel(self.excel_name,sheet_name="设备信息")
self.list = df.to_dict(orient="records") # 将数据打印出来,已字典存储的列表数据
#mult_conf = df["mult_command"].values.tolist() # 取一列的值生成列表
print(self.list) # 获取sheet(CMD)的dataframe
df1 = pd.read_excel(self.excel_name,sheet_name="CMD")
result1 = df1.to_dict(orient="list") # 将数据打印出来,将一列的数据存为一个字典
self.mult_config = result1["mult_command"]
print(self.mult_config) def mult_cmd_in(self,ip,user,dev_type,passwd):
try:
devices = {
'device_type': dev_type, # 锐捷os:ruijie_os, 华三:hp_comware 中兴:zte_zxros
'ip': ip,
'username': user,
'password': passwd,
} connect_dev = netmiko.ConnectHandler(**devices)
cmd_out = connect_dev.send_config_set(self.mult_config,enter_config_mode=False)
with open (ip + ".txt", "w",encoding="utf-8") as tmp_fle:
tmp_fle.write(cmd_out)
print(ip + " 执行成功") except netmiko.exceptions.NetmikoAuthenticationException:
self.lock.acquire()
with open("登录失败列表", "a", encoding="utf-8") as failed_ip:
failed_ip.write(ip + " 用户名密码错误\n")
print(ip + " 用户名密码错误")
self.lock.release()
except netmiko.exceptions.NetmikoTimeoutException:
self.lock.acquire()
with open("登录失败列表", "a", encoding="utf-8") as failed_ip:
failed_ip.write(ip + " 登录超时\n")
print(ip + " 登录超时")
self.lock.release() def main(self):
for dev_info in self.list:
#print(dev_info)
ip = dev_info["ip"]
#print(ip)
user = dev_info["user"]
dev_type = dev_info["dev_type"]
passwd = dev_info["password"]
self.pool.submit(self.mult_cmd_in,ip,user,dev_type,passwd)
os.chdir(self.path)
self.pool.shutdown(True) yc_use = net_dev("设备信息表.xlsx")
yc_use.get_dev_info()
yc_use.main()
netmiko批量操作网络设备_pandas版的更多相关文章
- 【原创】那些年用过的Redis集群架构(含面试解析)
引言 今天是2019年2月12号,也就是大年初八,我接到了高中同学刘有码面试失利的消息. 他面试的时候,身份是某知名公司的小码农一枚,却因为不懂自己生产上Redis是如何部署的,导致面试失败! 人间惨 ...
- 那些年用过的Redis集群架构
今天我们来谈谈Redis集群这个话题,需要说明的是本文 适合人群:不知道自己生产redis集群架构,以及对Redis集群不了解的人 不适合群: 对自己生产Redis集群架构非常了解的人 本文预计分两个 ...
- redis集群架构(含面试题解析)
老规矩,我还是以循序渐进的方式来讲,我一共经历过三套集群架构的演进! Replication+Sentinel 这套架构使用的是社区版本推出的原生高可用解决方案,其架构图如下! 这里Sentinel的 ...
- 【转】那些年用过的Redis集群架构(含面试解析)
引言 今天是2019年2月12号,也就是大年初八,我接到了高中同学刘有码面试失利的消息. 他面试的时候,身份是某知名公司的小码农一枚,却因为不懂自己生产上Redis是如何部署的,导致面试失败! 人间惨 ...
- Redis从入门到高级笔记【涵盖重点面试题】
NoSQL数据库 DBEngines网站中会统计目前数据库在全世界的排名 1.1 什么是NoSQL 最常见的解释是"non-relational",很多人说它是"Not ...
- 2016款MACBOOK PRO触控条版 安装WIN10初体验 及 无奈退货记
新的2016MBP终于发布了,作为把苹果电脑装WIN使用的人,等候很久之后,终于可以行动了. 黄山松 (Tom Huang) 发表于博客园http://www.cnblogs.com/tomview/ ...
- 在虚拟机上安装红帽Linux.5.5.for.x86.服务器版系统(按针对安装oracle 10g作的配置)
在虚拟机上安装红帽Linux.5.5.for.x86.服务器版系统(按针对安装oracle 10g作的配置) 软件版本: 虚拟机版本:vmwareworkstation 7.11 build-28 ...
- 《Linux企业应用案例精解(第2版)》新书开始发售
<Linux企业应用案例精解(第2版)>新书开始发售 650) this.width=650;" title="linux企业应用案例精解 第2版" alt= ...
- Linux 上的基础网络设备详解
抽象网络设备的原理及使用 网络虚拟化是 Cloud 中的一个重要部分.作为基础知识,本文详细讲述 Linux 抽象出来的各种网络设备的原理.用法.数据流向.您通过此文,能够知道如何使用 Linux 的 ...
- 《Linux设备驱动开发具体解释(第3版)》进展同步更新
本博实时更新<Linux设备驱动开发具体解释(第3版)>的最新进展. 2015.2.26 差点儿完毕初稿. 本书已经rebase到开发中的Linux 4.0内核,案例多数基于多核CORTE ...
随机推荐
- day09-AOP-02
AOP-02 4.问题提出 在上一篇的MyProxyProvider类中,我们的输出语句功能比较弱,在实际开发中,我们希望是以一个方法的形式,嵌入到真正执行的目标方法前,怎么办? 1.使用土方法解决 ...
- 洛谷P3654 First Step题解
这是一道暴力枚举. 大致题意:R行C列的棋盘要放下长度为K的线段,"#"表示无法放置,问有多少种放置方法. 直接贴代码: #include<bits/stdc++.h> ...
- 基础分类算法_KNN算法
KNN(K-NearestNeighbor)算法 KNN算法是有监督学习中的分类算法. KNN算法很特殊,可以被认为是没有模型的算法,也可以认为其训练数据集就是模型本身. KNN算法的原理 KNN的原 ...
- Ubuntu玩机记录,让我破电脑又飞起来了
写在前面 很早之前的电脑ThinkPad E440,一直没怎么用.最近整理了一下电脑的资料,全部备份到云盘.整理的过程感觉电脑很慢很慢,难受极了.整理完后,终于我要对它下手了! 我制作了启动U盘,把U ...
- TCP/IP RTT算法比较
TCP重传机制Timeout特点: 设长了,重发就慢,效率和性能差: 设短了,重发就快,可能导致没有丢就重发,增加网络拥塞,导致更多的超时,更多的超时导致更多的重发. TCP协议引入2个概念: RTT ...
- Feign远程调用 (介绍与使用)
Feign远程调用 Feign是代替RestTemplate进行远程调用的组件,避免了RestTemplate手写复杂的url容易出错的问题,并提高代码的可读性 使用Feign步骤 1)引入依赖 哪个 ...
- Gitee + Sourcetree 配置公钥 SSH
设置前提 安装Git Git下载 安装sourceTree sourceTree下载 gitee账号 gitee官网 Git设置公钥 1.在安装好 sourcetree 后 点击操作选择在终端中打开 ...
- WAVE音频文件格式及其64位扩展格式的简要介绍
正文 关于 WAVE 文件格式,网上有不少介绍,但关于WAVE 64位扩展格式的介绍却是几乎没有. 所以本文的目的是简要介绍标准的 WAVE 格式,以及两种主要的扩展格式. 文中所有代码都用C语言来描 ...
- DOM简单学习:为了满足案例要求
功能:控制html文档的内容 获取页面标签(元素)对象:Element document.getElementById("id值"):通过元素的id获取元素对象 操作Element ...
- 加密,各种加密,耙梳加密算法(Encryption)种类以及开发场景中的运用(Python3.10)
不用说火爆一时,全网热议的Web3.0区块链技术,也不必说诸如微信支付.支付宝支付等人们几乎每天都要使用的线上支付业务,单是一个简简单单的注册/登录功能,也和加密技术脱不了干系,本次我们耙梳各种经典的 ...