7-30 11 views
背景
前几天网络的同事说看看能不能帮忙写一个批量备份交换机配置的脚本,因为用的是h3c的设备比较多,就放弃了ansible
写了这么一个走ftp的多进程(不是多线程哈)的脚本,用的是multiprocessing模块的Process类,继承这个类重写了run方法
脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Author : Eric Winn # @Email : eng.eric.winn@gmail.com # @Time : 2018-06-26 09:00 # @Version : 1.0 # @File : switch_backup # @Software : PyCharm # import from ftplib import FTP import time,os import random from multiprocessing import Process # 获取当前日期 Today = time.strftime("%Y-%m-%d", time.localtime()) # 需要备份的交换机IP,这里也可以改成读文件的方式,随意哈 hosts = ['192.168.8.3', '192.168.8.5', '192.168.8.7', ] # 因为是走ftp,这里的Port是指定ftp的端口,其实默认也是21 port = 21 # 认证信息 user = 'user' pwd = 'password' class ftpFactory(Process): def __init__(self,host): super().__init__() self.host = host def run(self): # 判断一个目录是否存在 if os.path.exists(self.host) is False: # 创建目录 os.mkdir(self.host) # 进入到备份的子目录 os.chdir(self.host) else: os.chdir(self.host) # 实例化 ftp = FTP() ftp.set_debuglevel(2) # 建立连接 ftp.connect(self.host,port) # 登录 ftp.login(user,pwd) # buffer size bufsize = 1024 # 定义备份后的文件名 filename = "{}.cfg".format(Today) # 写入到文件中 file_handle = open(filename, "wb").write ftp.retrbinary("RETR jiujiu.cfg", file_handle, bufsize) ftp.set_debuglevel(0) # 退出 ftp.quit() # 切换回上级目录 os.chdir('../') if __name__ == '__main__': for host in hosts: h = ftpFactory(host) h.start() |
如果想赏钱,可以用微信扫描下面的二维码,一来能刺激我写博客的欲望,二来好维护云主机的费用; 另外再次标注博客原地址 itnotebooks.com 感谢!
