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的Flask中使用WTForms表单框架的基础教程
Jun 07 Python
Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
Jul 04 Python
pandas中去除指定字符的实例
May 18 Python
Python延时操作实现方法示例
Aug 14 Python
Python sklearn KFold 生成交叉验证数据集的方法
Dec 11 Python
使用Python 正则匹配两个特定字符之间的字符方法
Dec 24 Python
python 单线程和异步协程工作方式解析
Sep 28 Python
python判断变量是否为int、字符串、列表、元组、字典的方法详解
Feb 13 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
Mar 03 Python
利用python绘制数据曲线图的实现
Apr 09 Python
一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系
Jul 03 Python
Python绘制组合图的示例
Sep 18 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
初探PHP5
2006/10/09 PHP
destoon在各个服务器下设置URL Rewrite(伪静态)的方法
2014/06/21 Servers
ThinkPHP路由机制简介
2016/03/23 PHP
基于Laravel 多个中间件的执行顺序详解
2019/10/21 PHP
jquery实现一个简单好用的弹出框
2014/09/26 Javascript
手机端页面rem宽度自适应脚本
2015/05/20 Javascript
javascript格式化日期时间方法汇总
2015/06/19 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖动基本操作
2015/11/30 Javascript
完美解决IE9浏览器出现的对象未定义问题
2016/09/29 Javascript
浅析Node.js:DNS模块的使用
2016/11/23 Javascript
使用Bootstrap和Vue实现用户信息的编辑删除功能
2017/10/25 Javascript
vue中$set的使用(结合在实际应用中遇到的坑)
2018/07/10 Javascript
webstorm中配置Eslint的两种方式及差异比较详解
2018/10/19 Javascript
在Vue项目中,防止页面被缩放和放大示例
2019/10/28 Javascript
在vue-cli3.0 中使用预处理器 (Sass/Less/Stylus) 配置全局变量操作
2020/08/10 Javascript
如何利用nodejs实现命令行游戏
2020/11/24 NodeJs
[01:04:05]VG vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
学习Python selenium自动化网页抓取器
2018/01/20 Python
python 接口测试response返回数据对比的方法
2018/02/11 Python
Python字符串、整数、和浮点型数相互转换实例
2018/08/04 Python
解决python3捕获cx_oracle抛出的异常错误问题
2018/10/18 Python
佳能加拿大网上商店:Canon eStore Canada
2018/04/04 全球购物
捷克浴室和厨房设备购物网站:SIKO
2018/08/11 全球购物
汽车专业毕业生自荐信
2013/11/03 职场文书
服务中心夜班服务员岗位职责
2013/11/27 职场文书
应聘面试自我评价
2014/01/24 职场文书
合伙经营协议书
2014/04/18 职场文书
完美的中文自荐信
2014/05/24 职场文书
五心教育心得体会
2014/09/04 职场文书
中职毕业生自我鉴定范文(3篇)
2014/09/28 职场文书
白酒代理协议书范本
2014/10/26 职场文书
校本研修个人总结
2015/02/28 职场文书
高二英语教学反思
2016/03/03 职场文书
电子表的操作介绍说明书
2019/10/28 职场文书
Python趣味爬虫之用Python实现智慧校园一键评教
2021/05/28 Python
LeetCode189轮转数组python示例
2022/08/05 Python