[周末往期回顾] 自动备份思科交换机配置

时间:2022-07-23
本文章向大家介绍[周末往期回顾] 自动备份思科交换机配置,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

这个专题主要是一些日常用到的Python程序,不定期更新~~

备份原理

  1. 首先读取txt文档中的ip地址
  2. 然后循环地址,通过是我提出函数来获取配置信息
  3. 然后判断有没相应路径,没有则新建
  4. 最后保存在文件中

脚本内容

__author__ = '42274'
#encoding=utf-8
import telnetlib
import time
import datetime
import os
def switch(hostname,username,password1,password2,cmd1,cmd2):
    tn = telnetlib.Telnet(hostname,timeout=10)
    #tn.set_debuglevel(2)
    tn.read_until("Username: ")
    tn.write(username + "n")
    tn.read_until("Password: ")
    tn.write(password1 + "n")
    tn.read_until(">")
    tn.write('en'+ "n")
    tn.read_until("Password: ")
    tn.write(password2 + "n")
    tn.read_until("#")
    tn.write("terminal length 0"+"n")
    tn.write(cmd1 + "n")
    tn.write(cmd2 + "n")
    #tn.read_until("#")
    tn.write("exitn")
    result=tn.read_all()
    #print tn.read_all()
    return result
if __name__ == '__main__':
   # hostname = "10.65.5.1"
    username = 'file'
    password1='password1'
    password2='password2'
    cmd1='show run'
    cmd2='show version'
    file = open("g:swbackupipaddress.txt")
    ipaddress=file.readlines()
    for hostname  in ipaddress:
        hostname=hostname.strip()
        now = datetime.datetime.now()
        dirname=hostname
        #dirname="%.2i%.2i%.2i" % (now.year,now.month,now.day)
        filename_prefix='SWB_'+hostname
        filename = "%s_%.2i%.2i%.2i%.2i%.2i%.2i" % (filename_prefix,now.year,now.month,now.day,now.hour,now.minute,now.second)+'.txt'
        #filename = "%s_%.2i%.2i%.2i" % (filename_prefix,now.hour,now.minute,now.second)+'.txt'
        result=switch(hostname,username,password1,password2,cmd1,cmd2)
        base='g:\swbackup\'
        path=base+dirname+'\'
        ifExists=os.path.exists(path)
        if not ifExists:
            os.makedirs(path)
        else:
            pass
        backfile=path+filename
        fp=open(backfile,"w")
        fp.write(result)
        fp.close()

参数说明

  1. base 代表需要保存配置信息文件的根目录
  2. dirname代表子目录的名称,这里以ip地址作为子目录的名称
  3. path代表保存配置信息文件的目录位置
  4. filename_prefix代表保存配置信息文件的文件名前缀,采用’SWB+IP地址的形式
  5. filename代表配置信息文件的名称,这里采用前缀+备份时间作为最终文件名
  6. backfile即为最终保存配置文件的完整路径