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中使用PIL库实现图片高斯模糊实例
Feb 08 Python
极简的Python入门指引
Apr 01 Python
Python中对元组和列表按条件进行排序的方法示例
Nov 10 Python
Python中存取文件的4种不同操作
Jul 02 Python
Python二叉树的镜像转换实现方法示例
Mar 06 Python
Python3批量移动指定文件到指定文件夹方法示例
Sep 02 Python
浅析Django中关于session的使用
Dec 30 Python
Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解
Feb 18 Python
jupyter notebook清除输出方式
Apr 10 Python
python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法
Nov 05 Python
python基于tkinter实现gif录屏功能
May 19 Python
利用python Pandas实现批量拆分Excel与合并Excel
May 23 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实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
2014/07/18 PHP
分享ThinkPHP3.2中关联查询解决思路
2015/09/20 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
2016/09/30 PHP
PHP面向对象五大原则之开放-封闭原则(OCP)详解
2018/04/04 PHP
JavaScript脚本语言在网页中的简单应用
2007/05/13 Javascript
JavaScript asp.net 获取当前超链接中的文本
2009/04/14 Javascript
Javascript 设计模式(二) 闭包
2010/05/26 Javascript
JavaScript之编码规范 推荐
2012/05/23 Javascript
jQuery性能优化28条建议你值得借鉴
2013/02/16 Javascript
javascript判断机器是否联网的2种方法
2013/08/09 Javascript
js动态添加的DIV中的onclick事件简单实例
2016/07/25 Javascript
angular route中使用resolve在uglify压缩后问题解决
2016/09/21 Javascript
JavaScript之WebSocket技术详解
2016/11/18 Javascript
详解Angular的数据显示优化处理
2016/12/26 Javascript
JavaScript使用ZeroClipboard操作剪切板
2017/05/10 Javascript
node中koa中间件机制详解
2017/08/22 Javascript
Vue-cli3.x + axios 跨域方案踩坑指北
2019/07/04 Javascript
微信小程序实现上传照片代码实例解析
2020/08/04 Javascript
python实现一次创建多级目录的方法
2015/05/15 Python
Python实现购物车购物小程序
2018/04/18 Python
浅谈python日志的配置文件路径问题
2018/04/28 Python
基于python的图片修复程序(实现水印去除)
2018/06/04 Python
从请求到响应过程中django都做了哪些处理
2018/08/01 Python
一文了解Python并发编程的工程实现方法
2019/05/31 Python
详解java调用python的几种用法(看这篇就够了)
2020/12/10 Python
python 基于PYMYSQL使用MYSQL数据库
2020/12/24 Python
HTML5 实现图片上传预处理功能
2020/02/06 HTML / CSS
英国高端食品和葡萄酒超市:Waitrose
2016/08/23 全球购物
法务专员岗位职责
2014/01/02 职场文书
保密普查工作实施方案
2014/02/25 职场文书
社会治安综合治理管理责任书
2014/04/16 职场文书
销售团队获奖感言
2014/08/14 职场文书
争做文明公民倡议书
2019/06/24 职场文书
详解Redis复制原理
2021/06/04 Redis
HTML+JS实现在线朗读器
2022/02/15 Javascript
Python使用Web框架Flask开发项目
2022/06/01 Python