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 全局变量的import机制介绍
Sep 07 Python
python的dataframe和matrix的互换方法
Apr 11 Python
Python实现繁体中文与简体中文相互转换的方法示例
Dec 18 Python
python实现微信定时每天和女友发送消息
Apr 29 Python
Python+OpenCV+pyQt5录制双目摄像头视频的实例
Jun 28 Python
简单了解Django应用app及分布式路由
Jul 24 Python
numpy np.newaxis 的实用分享
Nov 30 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
Dec 10 Python
python 瀑布线指标编写实例
Jun 03 Python
Python函数参数定义及传递方式解析
Jun 10 Python
基于python爬取梨视频实现过程解析
Nov 09 Python
python如何调用php文件中的函数详解
Dec 29 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判断远程url是否有效的几种方法小结
2011/10/08 PHP
ThinkPHP模板Switch标签用法示例
2014/06/30 PHP
PHP SplObjectStorage使用实例
2015/05/12 PHP
php之可变变量的实例详解
2017/09/12 PHP
js输出列表实现代码
2010/09/12 Javascript
点弹代码 点击页面任何位置都可以弹出页面效果代码
2012/09/17 Javascript
在JavaScript里嵌入大量字符串常量的实现方法
2013/07/07 Javascript
JS下拉缓冲菜单示例代码
2013/08/30 Javascript
同域jQuery(跨)iframe操作DOM(实例讲解)
2013/12/19 Javascript
javascript中普通函数的使用介绍
2013/12/19 Javascript
jQuery多文件异步上传带进度条实例代码
2016/08/16 Javascript
AngularJS中关于ng-class指令的几种实现方式详解
2016/09/17 Javascript
微信小程序 Image API实例详解
2016/09/30 Javascript
浅谈Javascript事件对象
2017/02/05 Javascript
Node.js发送HTTP客户端请求并显示响应结果的方法示例
2017/04/12 Javascript
vue绑定设置属性的多种方式(5)
2017/08/16 Javascript
layui 监听表格复选框选中值的方法
2018/08/15 Javascript
JavaScript中的回调函数实例讲解
2019/01/27 Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
2019/03/14 Javascript
使用PYTHON接收多播数据的代码
2012/03/01 Python
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
2018/02/10 Python
numpy.transpose对三维数组的转置方法
2018/04/17 Python
Python发送邮件测试报告操作实例详解
2018/12/08 Python
windows下numpy下载与安装图文教程
2019/04/02 Python
利用python Selenium实现自动登陆京东签到领金币功能
2019/10/31 Python
Python使用matplotlib绘制Logistic曲线操作示例
2019/11/28 Python
IE8下CSS3选择器nth-child() 不兼容问题的解决方法
2016/11/16 HTML / CSS
清除canvas画布内容(点擦除+线擦除)
2020/08/12 HTML / CSS
Java中compareTo和compare的区别
2016/04/12 面试题
2013年保送生自荐信格式
2013/11/20 职场文书
村党支部对照检查材料思想汇报
2014/09/28 职场文书
2014年平安创建工作总结
2014/11/24 职场文书
我们的节日端午节活动总结
2015/02/11 职场文书
新店开业策划方案怎么书写?
2019/07/05 职场文书
聊一聊python常用的编程模块
2021/05/14 Python
Redis中一个String类型引发的惨案
2021/07/25 Redis