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 相关文章推荐
Python2实现的LED大数字显示效果示例
Sep 04 Python
python3.6+django2.0开发一套学员管理系统
Mar 03 Python
Python(Django)项目与Apache的管理交互的方法
May 16 Python
Python爬虫的两套解析方法和四种爬虫实现过程
Jul 20 Python
python 接收处理外带的参数方法
Dec 03 Python
搞定这套Python爬虫面试题(面试会so easy)
Apr 03 Python
为什么说Python可以实现所有的算法
Oct 04 Python
解决paramiko执行命令超时的问题
Apr 16 Python
解决python调用自己文件函数/执行函数找不到包问题
Jun 01 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
Jun 29 Python
python自动化之如何利用allure生成测试报告
May 02 Python
python 进阶学习之python装饰器小结
Sep 04 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 引用(&)详解
2009/11/20 PHP
PHP分多步骤填写发布信息的简单方法实例代码
2012/09/23 PHP
Linux中用PHP判断程序运行状态的2个方法
2014/05/04 PHP
PHP基于GD库实现的生成图片缩略图函数示例
2017/07/05 PHP
css动画效果之animation的常用样式
2021/03/09 HTML / CSS
如何设置一定时间内只能发送一次请求
2014/02/28 Javascript
JavaScript函数详解
2014/11/17 Javascript
jQuery中prevUntil()方法用法实例
2015/01/08 Javascript
jQuery Ajax请求后台数据并在前台接收
2016/12/10 Javascript
js多个物体运动功能实例分析
2016/12/20 Javascript
微信小程序实现留言板功能
2018/11/02 Javascript
解决echarts的多个折现数据出现坐标和值对不上的问题
2018/12/28 Javascript
js实现简单分页导航栏效果
2019/06/28 Javascript
对layui数据表格动态cols(字段)动态变化详解
2019/10/25 Javascript
ES2020 新特性(种草)
2020/01/12 Javascript
js实现滚动条自动滚动
2020/12/13 Javascript
[03:08]TI9战队档案 - Vici Gaming
2019/08/20 DOTA
python实现批量下载新浪博客的方法
2015/06/15 Python
Python操作rabbitMQ的示例代码
2019/03/19 Python
浅析Python 实现一个自动化翻译和替换的工具
2019/04/14 Python
使用Python制作简单的小程序IP查看器功能
2019/04/16 Python
Python列表的切片实例讲解
2019/08/20 Python
详解Python并发编程之从性能角度来初探并发编程
2019/08/23 Python
Python爬取豆瓣视频信息代码实例
2019/11/16 Python
关于多元线性回归分析——Python&SPSS
2020/02/24 Python
HTML5操作WebSQL数据库的实例代码
2017/08/26 HTML / CSS
德国狗狗用品在线商店:Schecker
2017/03/17 全球购物
PHP如何调用MYSQL存储过程
2014/05/30 面试题
您熟悉ORM(Object-Relation Mapping)吗?请谈谈您所理解的ORM
2016/02/08 面试题
工商管理专业实习生自我鉴定
2013/09/29 职场文书
现代化办公人员工作的自我评价
2013/10/16 职场文书
写自荐信三大法宝
2014/01/24 职场文书
2016年4月份红领巾广播稿
2015/12/21 职场文书
css3实现的加载动画效果
2021/04/07 HTML / CSS
Python Pygame实战之塔防游戏的实现
2022/03/17 Python
微信小程序 WeUI扩展组件库的入门教程
2022/04/21 Javascript