公司交换机、防火墙20台左右,理论上按期须要进行备份,但是这种须要人亲自去作的事情常常容易忘记,因此打算写个简单的python脚本自动备份。 方法1、比较新的网络设备如今都支持save后10分钟自动ftp备份配置到ftp服务器,但是我这里有部分华为S5700旧款没有这个功能,没法用统一方法进行备份,不采纳。 方法2、python3下能够下载一些模块进行自动ssh设备并操做,如:paramiko、pexpect。但是我用的时候发现竟然没法翻页(dis cu 的时候想按空格一直往下刷作不到),这两个模块摸索浪费了我很长时间都没法实现,不采纳。 方法3、使用python3标准库ftplib里面的FTP模块实如今linux上定时ftp到交换机下载相应的配置文件,接下来说的就是这种方式:
一、交换机配置好ftp,相关配置自行谷歌百度,配置好后本地ftp上去是这样的
其中vrpcfg.zip就是配置文件python
二、python3脚本 单一备份 from ftplib import FTP import time,os Today = time.strftime("%Y-%m-%d", time.localtime())#获取当天时间2017-03-27 ftp = FTP()#建立变量 ftp.set_debuglevel(2)#开启debug模式 ftp.connect(host="192.168.254.X",port=21)#FTP地址(交换机地址) ftp.login(user="admin",passwd="XXXXXXXX")#FTP帐号密码 print(ftp.getwelcome())#打印ftp登录成功信息 os.chdir('./192.168.254.242')#改变当前路径至192.168.254.242(已经在该目录下建立了这个文件夹) bufsize=1024#不太理解 filename="{}.zip".format(Today)#建立日期为前缀的zip文件 file_handle=open(filename,"wb").write#建立写操做 ftp.retrbinary("RETR vrpcfg.zip",file_handle,bufsize)#ftp后获取vrpcfg.zip这个文件并写入本地文件 ftp.set_debuglevel(0)#关闭调试模式 ftp.quit()#关闭FTP 批量备份 from ftplib import FTP import time,os Today = time.strftime("%Y-%m-%d", time.localtime()) hosts = ['192.168.254.X', '192.168.254.X', '192.168.254.X', '192.168.254.X', '192.168.254.X', '192.168.254.X', '192.168.254.X', '192.168.254.X', '192.168.254.X', '192.168.254.X'] port = 21 user = 'admin' pwd = 'XXXXXX' for host in hosts: # if host not in os.listdir('./'): if os.path.exists(host) is False:#os.path.exists(path) 判断一个目录是否存在 os.mkdir(host)#os.mkdir(path) 建立目录 os.chdir(host)#os.mkdir(path) 改变当前目录 else: os.chdir(host) ftp = FTP() ftp.set_debuglevel(2) ftp.connect(host,port) ftp.login(user,pwd) bufsize = 1024 filename = "{}.zip".format(Today) file_handle = open(filename, "wb").write ftp.retrbinary("RETR vrpcfg.zip", file_handle, bufsize) ftp.set_debuglevel(0) ftp.quit() os.chdir('../') 批量备份后是这样的
备份的文件都已日期为前缀linux
定时备份使用linux的 crontab -e按时执行back.py就好了,具体自行谷歌百度。服务器