公司交换机、防火墙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就行了,具体自行谷歌百度。