自动备份思科交换机配置

2017-10-11 Python 宅必备

这个专题主要是一些日常用到的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("exit\n")
    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:\swbackup\ipaddress.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即为最终保存配置文件的完整路径