python代码 FTP备份交换机配置脚本实例解析


Posted in Python onAugust 01, 2019

代码如下

#!/bin/python
#coding=utf-8
#python-version=2.75           #使用python2
from ftplib import FTP    #引用ftplib库中的FTP功能模块,进行ftp下载使用
import time           #引用time模块
import os            #引用os模块
"""
使用字典,定义交换机主机,一个字典包含多个键 ,一个键使用一个列表,包含多个主机地址按照实际情况定义
"""
dic = {
  'tongjiju':['XXXX.XXXX.XXXX.XXXX',
     'XXXX.XXXX.XXXX.XXXX',
     'XXXX.XXXX.XXXX.XXXX'],
    'dishui':['XXXX.XXXX.XXXX.XXXX','XXXX.XXXX.XXXX.XXXX']
}

"""
定义函数save,hosts
"""
def save(hosts, ftp):             #函数名save,两个参数,hosts和ftp
  url = '/root/backup_new/{}'.format(hosts)      #定义下载文件保存路径和目录url ,位置为/root/backup_new/,按照hosts内容格式化名称
  Today = time.strftime("%Y-%m-%d", time.localtime())      #定义时间,按照本地时间年月日定义  
  if not os.path.exists(url):                  #判断url文件是否存在,不存在
    os.mkdir(url)                      #则新建目录url
  for host in dic[hosts]:                    #循环,逐一循环字典中键和键值
    os.chdir(url)                      #切换目录到url(/root/backup_new/)
    if not os.path.exists(host):              #判断如果没有定义和创建host(按照列表中的主机地址)的文件目录
      os.mkdir(host)                  #创建host目录
      os.chdir(host)                  #切换到host目录
    else:                          #否则(当host目录存在时)
      os.chdir(host)                  #切换到host目录
    try:                           #错误处理机制try,当发生错误时,按照指定方式进行,因为有时主机不可达,ftp连接不上会报错
      ftp.connect(host, '21')             #ftp.connect方法,主机为host(列表中地址),端口21
      ftp.login('admin', 'xxxx')           #ftp.login方法,账户名为admin,密码为xxxx
  print "login " + host                    #打印 login和host,例如 login 172.31.216.2
  print ftp.getwelcome()                     #ftp.getwelcome方法,打印ftp登录成功信息
      bufsize = 1024                 #缓存区大小1024
      filename = "{}.zip".format(Today)       #ftp下载的文件按照今天(Today前面定义过)时间命名,例如2018=07-01.zip
      file_handle = open(filename, "wb").write   #以ftp读写的打开文件filename
      ftp.retrbinary("RETR vrpcfg.zip", file_handle, bufsize)  #ftp.retrbinary方法,以二进制的方式下载vrpcfg.zip的文件(华为交换机的配置文件),然后以读写的方式保存
  print host + " ftp down ok"                #打印host和"ftp down ok",例如172.31.216.2 ftp down ok
    except Exception as e:                #如果以上try语句部分发生错误,ftp不可达到,则跳转到该处,执行,整个过程不中断
      print '{} is loss , msg:-{}'.format(host, e)  #打印错误信息,例如172.31.216.2 is loss,msg:-error
 """
 定义主函数
 """
def main():                               #函数名
  ftp = FTP()                           #定义ftp=FTP()空函数
  # ftp.set_debuglevel(2)                     #打开ftp调试开关,有0-3不同级别,打开后显示ftp详细信息,可以选择使用
  # 0主动模式 1 #被动模式
  ftp.set_pasv(0)                          #这里使用ftp.set_pasv方法,确定使用主动模式,一般ftp采用被动模式,有很大机率登录异常
  for hosts in dic.keys():                    #循环dic字典的键值
    save(hosts, ftp)                     #调用save函数
  # 关闭调试模式
  # ftp.set_debuglevel(0)                     #关闭调试开关,前面如果打开了开关,则这里需要关闭
  ftp.quit()                            #ftp退出,必须使用
main()

使用效果

python代码 FTP备份交换机配置脚本实例解析

python代码 FTP备份交换机配置脚本实例解析

python代码 FTP备份交换机配置脚本实例解析

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python计算书页码的统计数字问题实例
Sep 26 Python
Python标准库内置函数complex介绍
Nov 25 Python
python中私有函数调用方法解密
Apr 29 Python
Python中实现变量赋值传递时的引用和拷贝方法
Apr 29 Python
PyQt5 在label显示的图片中绘制矩形的方法
Jun 17 Python
Python3 批量扫描端口的例子
Jul 25 Python
使用Python代码实现Linux中的ls遍历目录命令的实例代码
Sep 07 Python
浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
Oct 25 Python
python操作docx写入内容,并控制文本的字体颜色
Feb 13 Python
详解Python多线程下的list
Jul 03 Python
openstack中的rpc远程调用的方法
Jul 09 Python
Python进行区间取值案例讲解
Aug 02 Python
Windows系统Python直接调用C++ DLL的方法
Aug 01 #Python
Python CVXOPT模块安装及使用解析
Aug 01 #Python
Python Selenium 之数据驱动测试的实现
Aug 01 #Python
Python 一键获取百度网盘提取码的方法
Aug 01 #Python
Django中的静态文件管理过程解析
Aug 01 #Python
pycharm 批量修改变量名称的方法
Aug 01 #Python
python腾讯语音合成实现过程解析
Aug 01 #Python
You might like
关于尾递归的使用详解
2013/05/02 PHP
php如何解决无法上传大于8M的文件问题
2014/03/10 PHP
php实现改变图片直接打开为下载的方法
2015/04/14 PHP
基于jquery的3d效果实现代码
2011/03/23 Javascript
S2SH整合JQuery+Ajax实现登录验证功能实现代码
2013/01/30 Javascript
JS将表单导出成EXCEL的实例代码
2013/11/11 Javascript
完美解决IE低版本不支持call与apply的问题
2013/12/05 Javascript
JS获取地址栏参数的几种方法小结
2014/02/28 Javascript
javascript实现禁止右键和F12查看源代码
2014/12/26 Javascript
JavaScript生成带有缩进的表格代码
2016/06/15 Javascript
详解Vue.js中.native修饰符
2018/04/24 Javascript
angularJs利用$scope处理升降序的方法
2018/10/08 Javascript
详解VSCode配置启动Vue项目
2019/05/14 Javascript
微信小程序实现分享商品海报功能
2019/09/30 Javascript
基于vue的tab-list类目切换商品列表组件的示例代码
2020/02/14 Javascript
Nodejs环境实现socket通信过程解析
2020/07/03 NodeJs
js实现批量删除功能
2020/08/27 Javascript
python常规方法实现数组的全排列
2015/03/17 Python
Python编程实现双击更新所有已安装python模块的方法
2017/06/05 Python
python的paramiko模块实现远程控制和传输示例
2017/10/13 Python
python3调用百度翻译API实现实时翻译
2018/08/16 Python
python try except 捕获所有异常的实例
2018/10/18 Python
浅谈Python反射 & 单例模式
2019/03/21 Python
翻新二手苹果产品的网络领导者:Mac of all Trades
2017/12/19 全球购物
办公室秘书自我鉴定
2014/01/18 职场文书
学校消防演习方案
2014/02/19 职场文书
小学生感恩演讲稿
2014/04/25 职场文书
信息员培训方案
2014/06/12 职场文书
维稳工作情况汇报
2014/10/27 职场文书
社区活动总结
2015/02/04 职场文书
2015年领班工作总结
2015/04/29 职场文书
新生开学寄语大全
2015/05/28 职场文书
酒店员工管理制度
2015/08/05 职场文书
python中数组和列表的简单实例
2022/03/25 Python
vue中的可拖拽宽度div的实现示例
2022/04/08 Vue.js
分享很少见很有用的SQL功能CORRESPONDING
2022/08/05 MySQL