公司交換機、防火牆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就好了,具體自行谷歌百度。服務器