公司交換機、防火牆20臺左右,理論上定期需要進行備份,可是這種需要人親自去做的事情經常容易忘記,所以打算寫個簡單的python指令碼自動備份。
方法一、比較新的網路裝置現在都支援save後10分鐘自動ftp備份配置到ftp伺服器,可是我這裡有部分華為S5700舊款沒有這個功能,無法用統一方法進行備份,不採納。
方法二、python3下可以下載一些模組進行自動ssh裝置並操作,如:paramiko、pexpect。可是我用的時候發現居然無法翻頁(dis cu 的時候想按空格一直往下刷做不到),這兩個模組摸索浪費了我很長時間都無法實現,不採納。
方法三、使用python3標準庫ftplib裡面的FTP模組實現在linux上定時ftp到交換機下載相應的配置檔案,接下來講的就是這種方式:
1、交換機配置好ftp,相關配置自行谷歌百度,配置好後本地ftp上去是這樣的
其中vrpcfg.zip就是配置檔案
2、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的 crontab -e按時執行back.py就行了,具體自行谷歌百度。