目录回顾:

根据前面所学习的知识,可以远程登录设备下发命令等,现在已经可以转化为生产力了哈,今天小Q要实现的就是一个批量备份配置的小东西,

小Q通过学习产品文档了解到,可以通过以下四种方法进行备份配置文件:

a)直接屏幕拷贝。

b)备份配置文件到存储器中。

c)通过TFTP备份配置文件。

d)通过FTP备份配置文件。

小Q对这几种备份方式做了一个小对比,

a)直接屏幕拷贝 -屏幕上显示的配置信息受终端软件的影响,可能会出现某配置过长而换行的情况,而换行的配置可能无法恢复。 -丢弃此方式

b)备份配置文件到存储器中 ?受ENSP环境所限制,可以实现么? 不了解,丢弃此方式

c)通过TFTP备份配置文件 ?对设备无修改无变动 ?完美啊

d)通过FTP备份配置文件 ?备份时需要启动FTP服务器功能,对设备配置有变动,涉及安全性-丢弃此方式

既然采用TFTP的方式备份配置文件,

采用如下的思路进行配置:

a)保存配置文件。-执行命令 save config.cfg

b)通过TFTP备份配置文件。-需要一个tftp server,然后在设备上执行上传命令

组网图如下

要完成的备份脚本程序的组成模块如下:

首先实现备份程序的功能,直接修改第2章的内容,将多个设备信息已固定格式保存在一个txt里面,如下:

IP:用户名:密码

修改上次的ssh登录,使其支持多设备,代码如下(代码中依然增加了注释):

#!/usr/bin/python

#coding=utf-8

# 批量备份配置文件小脚本

from Exscript.util.interact import read_login

from Exscript.protocols import SSH2

from Exscript import Account

import os

import time

import datetime

import sys

reload(sys)

sys.setdefaultencoding("utf-8")

def LoginSSH(_Host,_Username,_Password) :

print "[+] Loging Host : %s " % _Host

account = Account(_Username,_Password)

ssh = SSH2()

try :

print "[+] Trying to Login in with username: %s password: %s " % (_Username,_Password)

ssh.connect(_Host)

ssh.login(account)

except Exception,e:

print "[-] Failed! ...",e

return 'LoginError',ssh

print "[+] Success ... username: %s and passoword %s is VALID! " % (_Username, _Password)

return 'LoginSuccess',ssh

def StartExecuteBackup(sshConnection,SaveCfgFileName):

BackUpCommand = 'save %s' % SaveCfgFileName

sshConnection.execute('dir')

# 判断是否已经存在备份文件,发现=1,未发现=0

CfgFileStatus = 0

if SaveCfgFileName in sshConnection.response:

CfgFileStatus = 1

sshConnection.set_prompt(r'y/n')

sshConnection.execute(BackUpCommand)

# 备份文件不存在时,确认一次

if CfgFileStatus == 0:

sshConnection.set_prompt()

sshConnection.execute('y')

print '[*] Save the configuration to %s' % SaveCfgFileName

# 备份文件存在时,确认两次,进行覆盖

else:

sshConnection.execute('y')

sshConnection.set_prompt()

sshConnection.execute('y')

print '[*] Overwrite %s '% SaveCfgFileName

def StartExecuteTftpUpload(sshConnection,TFtpHost,SaveCfgFileName):

# tftp IP put config.cfg backup.cfg

print '[*] Uploading the file to the remote TFTP server. Please wait...'

TFtpUpFileCommand = "tftp %s put %s %s" % (TFtpHost,SaveCfgFileName,SaveCfgFileName)

sshConnection.execute(TFtpUpFileCommand)

print '[*] TFTP: Uploading the file successfully.'

if __name__ == '__main__':

TFtpHost = raw_input("[*] Please Input Tftp server Adress:>")

# 读取多设备列表文件

HostFile = 'HostList.txt'

Date = datetime.date.today().strftime("%Y-%m-%d")

for line in open(HostFile, "r").readlines():

HostinfoList = line.strip().split(':')

_Host = HostinfoList[0]

_Username = HostinfoList[1]

_Password = HostinfoList[2]

LoginResult,sshConnection = LoginSSH(_Host,_Username,_Password)

# 登录成功后即可执行命令,基本检查信息

if LoginResult == 'LoginSuccess':

# 设置生成的配置文件名

SaveCfgFileName = '%s_%s_config.cfg' % (_Host,Date)

# 生成配置文件

StartExecuteBackup(sshConnection,SaveCfgFileName)

# 备份配置文件到tftp服务器

StartExecuteTftpUpload(sshConnection,TFtpHost,SaveCfgFileName)

# 关闭连接

#sshConnection.close()

print '[*] Session Close.'

然后,我们在编写一个tftp server小脚本(其他类似tftp软件一样可以的),用来接收从设备上传的配置文件,并保存,代码非常简单如下:

#!/usr/bin/python

#coding=utf-8

import sys

reload(sys)

sys.setdefaultencoding("utf-8")

import tftpy

import ConfigParser

config = ConfigParser.RawConfigParser()

# 如果要设置保存的目录,修改tftpcfg.cfg即可

config.read('tftpcfg.cfg')

directory = config.get('config','directory')

server = tftpy.TftpServer(directory)

print '[*] Tftp: 0.0.0.0'

print '[*] Upfile in:',directory

server.listen('0.0.0.0', 69)

使用时要设置tftp server工作目录,修改tftpcfg.cfg即可,如下:

好的现在一些都准备完毕了,首先启动我们的tftp

server软件,

然后运行我们的批量备份配置程序,运行后先输入Tftp服务器的ip,脚本将会自动进行配置备份,效果如下:

此时在查看tftp的目录,已经获取到了配置文件,如下:

目前这个小脚本异常处理还未考虑,所以仅限测试使用哦,相信简单修改下就可以使用了哈。

提示:可以将脚本生成exe的格式,就可以运行在无python环境的电脑了,附件将会进行打包提供下载,方便各位根据实际环境修改。

python批量拷贝数据脚本_使用python来玩转ensp~3-写个批量备份配置文件脚本相关推荐

  1. python读取串口数据 绘图_使用Python串口实时显示数据并绘图的例子

    使用pyserial进行串口传输 一.安装pyserial以及基本用法 在cmd下输入命令pip install pyserial 注:升级pip后会出现 "'E:Anaconda3Scri ...

  2. python拦截修改数据包_会Python?那么你一定要试一试mitmproxy

    mitmproxy 是一款工具,也可以说是 python 的一个包,使用这个工具可以在命令行上进行抓包(现在也可以在web页面上查看上抓的数据包了),还可以对所抓到的包进行脚本处理,非常有用. 和 f ...

  3. python怎么利用数据成像_使用Python对大脑成像数据进行可视化分析

    ## 简介 大脑是人类目前所知的最复杂的器官,为了很好的了解大脑这个器官,我们做了很多努力,核磁共振成像(Magnetic Resonance Image,MRI)技术就是其中的重要突破,通过MRI的 ...

  4. python多维数据存储_在Python中存储和重新加载大型多维数据集

    我将运行大量的模拟,产生大量的数据,这些数据需要在以后存储和访问.我的模拟程序的输出数据被写入文本文件(每个模拟一个).我计划编写一个Python程序来读取这些文本文件,然后以更便于以后分析的格式存储 ...

  5. python处理表格数据教程_用Python的pandas框架操作Excel文件中的数据教程

    引言 本文的目的,是向您展示如何使用pandas来执行一些常见的Excel任务.有些例子比较琐碎,但我觉得展示这些简单的东西与那些你可以在其他地方找到的复杂功能同等重要.作为额外的福利,我将会进行一些 ...

  6. python读取raw数据文件_在python下读取并展示raw格式的图片实例

    raw文件可能有些人没有,因此,先用一张图片创建一个raw格式的文件(其实可以是其他类型的格式文件) import numpy as np import cv2 img = cv2.imread('c ...

  7. python 3d大数据可视化_基于Python的数据可视化库pyecharts介绍

    什么是pyecharts? pyecharts 是一个用于生成 Echarts 图表的类库. echarts 是百度开源的一个数据可视化 JS 库,主要用于数据可视化.pyecharts 是一个用于生 ...

  8. python对excel数据更改_利用python对excel中一列的时间数据更改格式代码示例

    本篇文章小编给大家分享一下利用python对excel中一列的时间数据更改格式代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 问题场景:需要将 ...

  9. python对excel数据统计_用 python实现简单EXCEL数据统计

    原博文 2016-11-24 23:06 − 任务: 用python时间简单的统计任务-统计男性和女性分别有多少人. 用到的物料:xlrd 它的作用-读取excel表数据 代码: import xlr ...

  10. python处理表格数据教程_利用Python处理Excel数据

    本文的数据源是朝阳医院2016的销售数据,课程是使用R语言来进行数据处理的,这里尝试采用Python来处理. 要求的业务指标是:1)月均消费次数:2)月均消费金额:3)客单价:4)消费趋势 这几个指标 ...

最新文章

  1. c++ 11 锁_国民技术面向智能锁市场提供全系芯片与开源安全解决方案
  2. [剑指offer] 34. 第一个只出现一次的字符
  3. 数字证书及CA的扫盲介绍
  4. Java 序列化 之 单例模式
  5. android studio 中 gradle 配置与说明
  6. 虚拟机vmware的连接方式以及IP端口,协议等概念
  7. 谈谈Circuit Breaker在.NET Core中的简单应用
  8. paddlepaddle的使用
  9. AndroidStudio debug
  10. 获取Activity当前屏幕方向。
  11. [人工智能]深入浅出机器学习
  12. 数据库基本操作和常用命令
  13. 学习笔记(01):2020软考网络工程师--基础知识视频教程-计算机硬件基础(一)
  14. java 类的加载机制详解
  15. 音频D类功放LC滤波器设计(一)
  16. 计算机多了一个用户,win10电脑多一个administrator账户怎么办
  17. Docker数据卷映射
  18. 路由器php系统时间设置时间设置时间设置,4G工业路由器系统设置与时间密码设置...
  19. 如何画出FPN论文中的金字塔结构图
  20. ieee754最小规格化正数C语言,IEEE754标准浮点格式

热门文章

  1. progisp编程下载器:芯片识别字不匹配 不能完成芯片擦除
  2. 2022引流新玩法,异业联盟打造商业闭环
  3. android监控app被杀死,Android App前后台监控
  4. 人工神经网络的训练步骤,神经网络常用训练方法
  5. 海量大数据地图可视化
  6. Vue3通透教程【十二】TS类型声明优势
  7. 桌面窗口管理器(dwm.exe)占用高内存的解决方法
  8. 巴厘岛7天6晚实用型游记
  9. 优化了的过关键点的光滑曲线拟合算法
  10. Java实习(一维)线性回归方程