基于Python通过SSH方式批量备份交换机

针对公司华为和思科多台设备进行批量备份配置,调用excel表格进行设备ip、账号、密码读取,通过SSH登录进行查看配置,将显示的配置存入到文件中保存到本地,excel分Huawei和Cisco两个工作表,表第一行参照下面表格, 也可根据表内容修改代码中变量赋值,将excel同脚本放在同一目录,第一次运行需要安装对应的库。水平有限,只为记录自己,不喜勿喷,欢迎大佬们指点。
HostIPUsernamePassword
# -*- coding: utf-8 -*-
# @Date: 2020/11/3
# @Author : Crayon
# @File : Backup-Network.py
# @Software: PyCharm
import paramiko
import xlrd
import time
from datetime import datetime

#打开NetworkInfo.xlsx
workbook=xlrd.open_workbook('NetworkInfo.xlsx')
#按工作表名称选择Huawei工作表
sheet=workbook.sheet_by_name('Huawei')
#排除第一行后,遍历所有行的数据
for a in range(1,sheet.nrows):
  #将一行数据传给info数组
  info=sheet.row_values(a)
  #按数组下标赋值给对应变量
  host=str(info[0])
  ip=str(info[1])
  username=str(info[2])
  password=str(info[3])
  ssh_client=paramiko.SSHClient()
  ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  ssh_client.connect(hostname=ip,username=username,password=password)
  command=ssh_client.invoke_shell()
  #设置回显内容不分屏显示
  command.send("screen-length 0 temporary " +"\n")
  #获取交换机运行配置
  output=(command.send("dis cu" +"\n"))
  #程序暂停10秒
  time.sleep(10)
  #将查询运行配置的回显内容赋值给recv这个对象
  conf=command.recv(655355).decode("utf8","ignore")
  #读取当前时间
  now=datetime.now()
  #打开备份文件
  backup=open(r"D:\backup\\"+str(now.year)+"-"+str(now.month)+"-"+str(now.day)+"-"+host+"-"+ip+".txt","a+")
  #将回显内容写入backup这个对象,相当于写入了备份文件中
  backup.write(conf)
  #关闭打开的文件
  backup.close()

workbook=xlrd.open_workbook('NetworkInfo.xlsx')
#按工作表名称选择Cisco工作表
sheet=workbook.sheet_by_name('Cisco')
for b in range(1,sheet.nrows):
  info=sheet.row_values(b)
  host=str(info[0])
  ip=str(info[1])
  username=str(info[2])
  password=str(info[3])
  ssh_client=paramiko.SSHClient()
  ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  ssh_client.connect(hostname=ip,username=username,password=password)
  command=ssh_client.invoke_shell()
  #设置回显内容不分屏显示
  command.send("terminal length 0" +"\n")
  output=(command.send("show run" +"\n"))
  time.sleep(10)
  conf=command.recv(65535).decode("utf8","ignore")
  now=datetime.now()
  backup=open(r"D:\backup\\"+str(now.year)+"-"+str(now.month)+"-"+str(now.day)+"-"+host+"-"+ip+".txt","a+")
  backup.write(conf)
  backup.close()

#结束,断开SSH连接
ssh_client.close()

 

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值