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映射列表实例分析
Jan 26 Python
Django中模型Model添加JSON类型字段的方法
Jun 17 Python
快速了解python leveldb
Jan 18 Python
Python数据集切分实例
Dec 08 Python
对python制作自己的数据集实例讲解
Dec 12 Python
python实现图片彩色转化为素描
Jan 15 Python
弄懂这56个Python使用技巧(轻松掌握Python高效开发)
Sep 18 Python
Python转换itertools.chain对象为数组的方法
Feb 07 Python
从多个tfrecord文件中无限读取文件的例子
Feb 17 Python
Python使用GitPython操作Git版本库的方法
Feb 29 Python
Python把图片转化为pdf代码实例
Jul 28 Python
Python中常见的反爬机制及其破解方法总结
Jun 10 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序列号生成函数和字符串替换函数代码
2012/06/07 PHP
php基于双向循环队列实现历史记录的前进后退等功能
2015/08/08 PHP
实例讲解PHP表单处理
2019/02/15 PHP
window.js 主要包含了页面的一些操作
2009/12/23 Javascript
关于jQuery中的end()使用方法
2011/07/10 Javascript
javaScript如何处理从java后台返回的list
2014/04/24 Javascript
ext combobox动态加载数据库数据(附前后台)
2014/06/17 Javascript
node.js+Ajax实现获取HTTP服务器返回数据
2014/11/26 Javascript
js实现将选中值累加到文本框的方法
2015/08/12 Javascript
如何使用headjs来管理和异步加载js
2016/11/29 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
2017/01/10 Javascript
jQuery 全选 全不选 事件绑定的实现代码
2017/01/23 Javascript
JavaScript html5 canvas实现图片上画超链接
2017/10/20 Javascript
Angular动画实现的2种方式以及添加购物车动画实例代码
2018/08/09 Javascript
Vue项目打包部署到iis服务器的配置方法
2019/10/14 Javascript
[01:38]DOTA2 2015国际邀请赛中国区预选赛 Showopen
2015/06/01 DOTA
python处理文本文件并生成指定格式的文件
2014/07/31 Python
分享Python文本生成二维码实例
2016/01/06 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
2016/09/21 Python
详解python之多进程和进程池(Processing库)
2017/06/09 Python
关于Python数据结构中字典的心得
2017/12/04 Python
python删除服务器文件代码示例
2018/02/09 Python
python实现对求解最长回文子串的动态规划算法
2018/06/02 Python
在python 中实现运行多条shell命令
2019/01/07 Python
使用CSS3实现input多选框自定义样式的方法示例
2019/07/19 HTML / CSS
如何使用css3实现一个类在线直播的队列动画的示例代码
2020/06/17 HTML / CSS
美国指甲油品牌:Deco Miami
2017/01/30 全球购物
业务主管岗位职责
2013/11/20 职场文书
新品发布会主持词
2014/04/02 职场文书
个人四风问题整改措施
2014/10/24 职场文书
2015建军节87周年演讲稿
2015/03/19 职场文书
写给女朋友的保证书
2015/05/09 职场文书
独生子女证明范本
2015/06/19 职场文书
中学生运动会广播稿
2015/08/19 职场文书
springboot @ConfigurationProperties和@PropertySource的区别
2021/06/11 Java/Android
SQL Server中使用表变量和临时表
2022/05/20 SQL Server