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爬虫框架Scrapy实战之批量抓取招聘信息
Aug 07 Python
详解Python中 __get__和__getattr__和__getattribute__的区别
Jun 16 Python
轻松掌握python设计模式之策略模式
Nov 18 Python
关于pip的安装,更新,卸载模块以及使用方法(详解)
May 19 Python
用Python实现读写锁的示例代码
Nov 05 Python
Python玩转Excel的读写改实例
Feb 22 Python
PyQt5中QTableWidget如何弹出菜单的示例代码
Feb 23 Python
python-xpath获取html文档的部分内容
Mar 06 Python
如何理解python对象
Jun 21 Python
python通过函数名调用函数的几种场景
Sep 23 Python
python中tkinter复选框使用操作
Nov 11 Python
PYTHON InceptionV3模型的复现详解
May 06 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
第六节--访问属性和方法
2006/11/16 PHP
php中XMLHttpRequest(Ajax)不能设置自定义的Referer的解决方法
2011/11/26 PHP
php去除字符串中空字符的常用方法小结
2015/03/17 PHP
PHP递归调用数组值并用其执行指定函数的方法
2015/04/01 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
javascript下判断一个元素是否存在的代码
2010/03/05 Javascript
有关于eclipse配置spket需要注意的一些地方
2013/04/07 Javascript
jQuery简单图表peity.js使用示例
2014/05/02 Javascript
使用window.prompt()实现弹出用户输入的对话框
2015/04/13 Javascript
Bootstrap精简教程中秋大放送
2016/09/15 Javascript
前端设计师们最常用的JS代码汇总
2016/09/25 Javascript
jQuery实现对象转为url参数的方法
2017/01/11 Javascript
ES6新特性三: Generator(生成器)函数详解
2017/04/21 Javascript
Angular+Bootstrap+Spring Boot实现分页功能实例代码
2017/07/21 Javascript
swiper动态改变滑动内容的实现方法
2018/01/17 Javascript
详解node.js的http模块实例演示
2018/07/12 Javascript
Vue列表渲染的示例代码
2018/11/01 Javascript
[08:42]DOTA2每周TOP10 精彩击杀集锦vol.2
2014/06/25 DOTA
Python 12306抢火车票脚本
2018/02/07 Python
python 提取tuple类型值中json格式的key值方法
2018/12/31 Python
详解Python 4.0 预计推出的新功能
2019/07/26 Python
python标准库os库的函数介绍
2020/02/12 Python
关于Theano和Tensorflow多GPU使用问题
2020/06/19 Python
Python3+selenium配置常见报错解决方案
2020/08/28 Python
使用phonegap操作数据库的实现方法
2017/03/31 HTML / CSS
基于 HTML5 WebGL 实现的医疗物流系统
2019/10/08 HTML / CSS
法国珠宝店:CLEOR
2017/01/29 全球购物
美国紧身牛仔裤品牌:NYDJ
2017/05/24 全球购物
泰国办公用品购物网站:OfficeMate
2018/02/04 全球购物
德尔福集团DELPHI的笔试题
2012/02/22 面试题
机电专业体育教师求职信
2013/09/21 职场文书
酒店总经理岗位职责
2014/03/17 职场文书
学生会主席演讲稿
2014/04/25 职场文书
医德医魂心得体会
2014/09/11 职场文书
民主生活会对照检查材料范文
2014/10/01 职场文书
校园学雷锋广播稿
2014/10/08 职场文书