参考文献

参考文献1:https://www.oschina.net/code/snippet_7933_47935

测试代码

前言:这个程序用来批量备份博达交换机的配置,需要在桌面打开tftpd32.exe,还有打开sw.txt,

txt里面一行写一个ip地址,同时修改代码对应的tftpser ip地址。这个代码是改写现成的代码,

还有线程部分不太懂,是可以多线程同时进行的。

#!/usr/bin/python

# -*- coding: utf-8

import sys,os,telnetlib,time,threading,datetime,logging,re

import msvcrt #这个用来定义退出cmd,不然程序一闪而过

#---------------------------这段程序用来定义日志------------------------------

logger = logging.getLogger("Test") #为这个log取个名字

logger.setLevel(logging.DEBUG) #定义debug(优先级10)以上的告警都进行捕获

fh = logging.FileHandler("test.log") #把log写入相应的文件中

fh.setLevel(logging.DEBUG) #定义debug(优先级10)以上的告警都写入到文件

sh = logging.StreamHandler() #把log打印到屏幕上

sh.setLevel(logging.DEBUG) #定义debug(优先级10)以上的告警都打印到屏幕上

#定义要打印的参数的格式(参数很多),系统时间,name(logging.getLogger("Test")),优先级,自定义日志

formatter = logging.Formatter("%(asctime)s [%(name)s] -

[%(levelname)s]: %(message)s")

fh.setFormatter(formatter) #把格式formatter赋值给fh

sh.setFormatter(formatter) #把格式formatter赋值给sh

logger.addHandler(fh) #把fh加入logger.

logger.addHandler(sh) #把sh加入logger.

#---------------------------这段程序用来备份配置------------------------------

#Use for loop to telnet into each routers and execute

commands

class Bakconf(threading.Thread):

def __init__(self,host,username,password):

threading.Thread.__init__(self)

self.host=host

self.username=username

self.password=password

def run(self):

try:

logger.debug('------------------------connect---------------------------')

tn = telnetlib.Telnet(self.host,port=23,timeout=10)

except:

print "Can't connection %s"% self.host

return

tn.set_debuglevel(5)

logger.debug('-------------------------login----------------------------')

tn.write(self.username +b"\n")

tn.write("en\n")

tn.write(self.password + b"\n")

logger.debug('-----------------------backup

start---------------------------')

tn.write("copy startup-config tftp: %s \n"% tftpser)

tn.write(host + "\n")

#tn.write(b"\n")

time.sleep(1)

tn.write("exit\n")

tn.close()

logger.debug('--------------------------end------------------------------')

def main():

logger.debug('-----------------------read

username+password---------------------------')

username = "admin"

password = "admin"

global tftpser

logger.debug('-------------------read

tftpserverip-----------------------')

tftpser="66.66.66.100"

for host in open(r'sw.txt').readlines():

dsthost = host.strip('\n')

bakconf=Bakconf(dsthost, username, password)

bakconf.start()

'''

#Backup switch config and tar

time.sleep(1)

dtime=datetime.datetime.now().strftime("%Y%m%d%H%M%S")

os.popen('tar -cjf /backup/cisco/switch-'+dtime+'.tar.bz2 '+

'/tftproot')

os.popen('rm -fr /tftproot/*')

os.popen('find /backup/cisco/ -mtime +90 -exec rm {} \;')

'''

if __name__=="__main__":

main()

print ("Press 'D' to exit...") #提示press ‘D’ 退出cmd

while True:

if ord(msvcrt.getch()) in [68, 100]:#获取到‘D’键位

break #退出程序

python自动备份交换机配置脚本_python代码自动备份交换机配置相关推荐

  1. python自动批量发邮件脚本_Python实现自动发送邮件功能

    简单邮件传输协议(SMTP)是一种协议,用于在邮件服务器之间发送电子邮件和路由电子邮件.Python提供smtplib模块,该模块定义了一个SMTP客户端会话对象,可用于使用SMTP或ESMTP侦听器 ...

  2. eclipse代码自动提示设置、如何配置eclipse的代码自动提示功能(同时解决自动补全变量名的问题)?

    eclipse代码自动提示设置.如何配置eclipse的代码自动提示功能(同时解决自动补全变量名的问题)? 参考文章: (1)eclipse代码自动提示设置.如何配置eclipse的代码自动提示功能( ...

  3. java设置代码自动提示_eclipse代码自动提示设置、如何配置eclipse的代码自动提示功能?...

    对于编程人员来说,要记住大量的类名或类方法的名字,着实不是一件容易的事情.如果要IDE能够自动补全代码,那将为我们编程人员带来很大帮助. EcliPSe代码里面的代码提示功能默认是关闭的,只有输入&q ...

  4. Nginx编译配置脚本篇(8)- 模块配置脚本auto/modules

    Nginx编译配置脚本篇(8)- 模块配置脚本auto/modules 1.相关文章 2.前言 3.auto/module脚本文件详解 3.1.设置ngx_var的值 3.2.当ngx_module_ ...

  5. python怎么登录微博并发微博_Python代码登录新浪微博并自动发微博

    前言 对于很少玩微博@張行之_的我来说,微博内容少的可怜.所以本人就想:能不能写个成功程序来帮我发微博.这个程序要满足以下要求: 自动化,自动登录微博,自动发微博. 微博内容要有意义,不能是随机生成的 ...

  6. python写淘宝秒杀脚本_python实现淘宝秒杀脚本

    本文实例为大家分享了python实现淘宝秒杀脚本的具体代码,供大家参考,具体内容如下 1.安装pycharm.网上教程很多. 2.安装 Selenium 库. Selenium支持很多浏览器,我选择的 ...

  7. python怎么换行继续写脚本_python怎么换行继续写脚本

    推荐手册:Python 基础入门教程 在python中,Python用反斜线 ("") 作为续行符(换行符),这里以python3.5为例.首先运行终端或者cmd命令行(windo ...

  8. 使用VS Code编写maxscript脚本(代码自动补全)

    文章目录 1 VS Code安装 2 VS Code汉化 3 maxscript 插件安装 4 编写maxscript脚本 1 VS Code安装 官方下载地址:https://code.visual ...

  9. linux 函数自动补全,Shell脚本中实现自动补全功能

    对于Linuxer来说,自动补全是再熟悉不过的一个功能了.当你在命令行敲下部分的命令时,肯定会本能地按下Tab键补全完整的命令,当然除了命令补全之外,还有文件名补全. Bash-completion ...

最新文章

  1. java 学习 --------接口概念
  2. 一个很全的中断资料网站
  3. $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 区别
  4. Linux/Centos下安装部署phantomjs 及使用
  5. docker network bridge模式,默认(一)
  6. Excel控件 Spire.XLS系列教程(2):C# 设置现有 Excel 图表的数据标签样式
  7. Vue中this.$router.replace和this.$router.push的区别
  8. 16位LED恒流源芯片TC5020A,32*128点阵屏驱动函数
  9. MATLAB函数或变量无法识别
  10. excel生成随机数 / random number in excel
  11. 说一说android:persistent=true保活
  12. NYOJ-234-DP(吃土豆)
  13. 数据科学和人工智能技术笔记 二十、数据可视化
  14. [GIS原理] 9.1 数字高程模型DEM-特征 | 分类 | 构建 | 数据结构 | 空间内插 | DEM的未来
  15. 矩阵方程的计算求解(Matlab实现)
  16. Excel表格中,删除列或行的快捷键是什么
  17. 从东京奥运会看js设计模式之发布订阅模式
  18. CPU中的寄存器和地址概念
  19. 函数的连续性和间断点——“高等数学”
  20. data:image/png;base64,iVBORw0KGg... 表示的是一张图片

热门文章

  1. 抢购活动php,php结合redis实现高并发下的抢购、秒杀功能
  2. 详解经历的各个广告联盟平台
  3. Some Tips in Life
  4. brew link的一些问题
  5. RAW图像处理工具capture one 12 mac版
  6. 一步解决IDEA格式化快捷键ctrl+alt+F失效,热键冲突问题
  7. 秋招笔试_拼词游戏_Java版本
  8. html怎么去除文字广告,手把手教你简单去除网页广告
  9. 全国环游怎么走----蚁群算法
  10. 红豆Live推荐算法中召回和排序的应用和策略