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中list循环语句用法实例
Nov 10 Python
在Windows系统上搭建Nginx+Python+MySQL环境的教程
Dec 25 Python
Python爬虫实现爬取京东手机页面的图片(实例代码)
Nov 30 Python
Python实现的NN神经网络算法完整示例
Jun 19 Python
Python输出\u编码将其转换成中文的实例
Dec 15 Python
Python实现定时执行任务的三种方式简单示例
Mar 30 Python
numpy.random模块用法总结
May 27 Python
python实现ip地址查询经纬度定位详解
Aug 30 Python
pytorch AvgPool2d函数使用详解
Jan 03 Python
解决Python3.7.0 SSL低版本导致Pip无法使用问题
Sep 03 Python
python判断all函数输出结果是否为true的方法
Dec 03 Python
python基于tkinter制作下班倒计时工具
Apr 28 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
php计算title标题相似比的方法
2015/07/29 PHP
CodeIgniter控制器之业务逻辑实例分析
2016/01/20 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
2020/04/23 PHP
JS 文件本身编码转换 图文教程
2009/10/12 Javascript
利用JQuery+EasyDrag 实现弹出可拖动的Div,同时向Div传值,然后返回Div选中的值
2009/10/24 Javascript
JQuery自定义事件的应用 JQuery最佳实践
2010/08/01 Javascript
收集的一些Array及String原型对象的扩展实现代码
2010/12/05 Javascript
基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
2013/05/07 Javascript
玩转方法:call和apply
2014/05/08 Javascript
innerHTML动态添加html代码和脚本兼容多个浏览器
2014/10/11 Javascript
jQuery动画出现连续触发、滞后反复执行的解决方法
2015/01/28 Javascript
JS运动基础框架实例分析
2015/03/03 Javascript
JS实现简洁、全兼容的拖动层实例
2015/05/13 Javascript
详解JavaScript中的构造器Constructor模式
2016/01/14 Javascript
深入理解JavaScript中的对象复制(Object Clone)
2016/05/18 Javascript
JavaScript 动态三角函数实例详解
2017/01/08 Javascript
简单实现js选项卡切换效果
2017/02/09 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
2017/09/18 Javascript
微信小程序使用wx.request请求服务器json数据并渲染到页面操作示例
2019/03/30 Javascript
[04:39]显微镜下的DOTA2第十三期—Pis卡尔个人秀
2014/04/04 DOTA
Python 条件判断的缩写方法
2008/09/06 Python
python使用paramiko模块实现ssh远程登陆上传文件并执行
2014/01/27 Python
python flask实现分页效果
2017/06/27 Python
Python遍历某目录下的所有文件夹与文件路径
2018/03/15 Python
python basemap 画出经纬度并标定的实例
2019/07/09 Python
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
2020/01/13 Python
详解HTML5 window.postMessage与跨域
2017/05/11 HTML / CSS
HTML5 weui使用笔记
2019/11/21 HTML / CSS
清明节扫墓活动方案
2014/03/02 职场文书
大学计划书范文800字
2014/08/14 职场文书
群众路线专项整治工作情况报告
2014/10/28 职场文书
节约用电倡议书
2015/04/28 职场文书
基层组织建设年活动总结
2015/05/09 职场文书
python geopandas读取、创建shapefile文件的方法
2021/06/29 Python
Redis实战之Lettuce的使用技巧详解
2022/12/24 Redis