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定时器(Timer)用法简单实例
Jun 04 Python
Python基于列表模拟堆栈和队列功能示例
Jan 05 Python
Python 3.7新功能之dataclass装饰器详解
Apr 21 Python
python实现录音小程序
Oct 26 Python
解决pycharm运行时interpreter为空的问题
Oct 29 Python
Python小白必备的8个最常用的内置函数(推荐)
Apr 03 Python
python 中的列表生成式、生成器表达式、模块导入
Jun 19 Python
pytorch实现用CNN和LSTM对文本进行分类方式
Jan 08 Python
Pytorch模型转onnx模型实例
Jan 15 Python
python脚本监控logstash进程并邮件告警实例
Apr 28 Python
Python基于codecs模块实现文件读写案例解析
May 11 Python
python如何将图片转换素描画
Sep 08 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 set_time_limit(0)长连接的实现分析
2010/03/02 PHP
php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
2012/06/13 PHP
一个php生成16位随机数的代码(两种方法)
2014/09/16 PHP
PHP准确取得服务器IP地址的方法
2015/06/02 PHP
一个非常实用的php文件上传类
2017/07/04 PHP
Laravel框架基于ajax和layer.js实现无刷新删除功能示例
2019/01/17 PHP
利用Dojo和JSON建立无限级AJAX动态加载的功能模块树
2007/03/24 Javascript
阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)
2007/05/08 Javascript
js replace正则表达式应用案例讲解
2013/01/17 Javascript
js实现简单登录功能的实例代码
2013/11/09 Javascript
jtable列中自定义button示例代码
2013/11/21 Javascript
论JavaScript模块化编程
2016/03/07 Javascript
js+css实现select的美化效果
2016/03/24 Javascript
js的form表单提交url传参数(包含+等特殊字符)的两种解决方法
2016/05/25 Javascript
js改变css样式的三种方法推荐
2016/06/28 Javascript
es6的数字处理的方法(5个)
2017/03/16 Javascript
react.js使用webpack搭配环境的入门教程
2017/08/14 Javascript
JS继承实现方法及优缺点详解
2020/09/02 Javascript
[03:28]2014DOTA2国际邀请赛 EG战队官方纪录片
2014/07/21 DOTA
python2.x实现人民币转大写人民币
2018/06/20 Python
有关Python的22个编程技巧
2018/08/29 Python
python 普通克里金(Kriging)法的实现
2019/12/19 Python
Windows上安装tensorflow  详细教程(图文详解)
2020/02/04 Python
HTML5使用Audio标签实现歌词同步的效果
2016/03/17 HTML / CSS
HTML5的语法变化介绍
2013/08/13 HTML / CSS
澳大利亚快时尚鞋类市场:Billini
2018/05/20 全球购物
后勤采购员岗位职责
2013/12/19 职场文书
幼儿园教育教学反思
2014/01/31 职场文书
高中打架检讨书
2014/02/13 职场文书
社区服务标语
2014/07/01 职场文书
高三语文复习计划
2015/01/19 职场文书
银行稽核岗位职责
2015/04/13 职场文书
结婚典礼主持词
2015/06/29 职场文书
分享几个JavaScript运算符的使用技巧
2021/04/24 Javascript
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
2022/04/21 Python
Redis主从复制操作和配置详情
2022/09/23 Redis