python代码 FTP备份交换机配置脚本实例解析
作者:羊草 发布时间:2023-05-08 22:47:25
标签:python,ftp,备份,交换机,配置,脚本
代码如下
#!/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()
使用效果
来源:https://blog.51cto.com/11555417/2136141
0
投稿
猜你喜欢
- javascript 常见汉字转换成拼音,上下行排列,方便对比,速度快,你可以把代码复制到本地,作为一个不错的汉字转换拼音的工具!转换效果图
- 以下的文章主要介绍的是SQL Serve数据库到DB2连接服务器的实现过程,我们大家都知道不同数据库平台的互连,一般对其称之为数据库的异构服
- 表单在网页中主要负责数据采集功能。一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数
- 数据及配置文件之争数据及文件通常有三种类型:配置文件型:如ini,conf,properties文件,适合存储简单变量和配置项,最多支持两层
- 加了三个验证漏洞以及四个getshell方法# /usr/bin/env python3# -*- coding: utf-8 -*-# @
- 一、前言最近做web网站的测试,遇到很多需要批量造数据的功能;比如某个页面展示数据条数需要达到10000条进行测试,此时手动构造数据肯定是不
- openpyxl特点openpyxl(可读写excel表)专门处理Excel2007及以上版本产生的xlsx文件,xls和xlsx之间转换容
- 一、 网页设计中的对比原则一件网页设计作品由许多元素构成,它们的重要性各不相同,其中一些元素的重要性要高于其它元素。一些相互关联,而另一些则
- //-------------------------------------------- // 删除千分点。 //-----------
- window对象表示浏览器中打开的窗口,提供关于窗口状态的信息。可以用window对象访问窗口中绘制的文档、窗口中发生的事件和影响窗口的浏览
- 连续看到几个和 Oracle 优化器隐含参数 _sort_elimination_cost_ratio 相关的优化案例(Refer Refe
- 从今天开始起,基督山将和大家一起进入ASP.net 诸多程序的学习中,老实说,.net到底是法宝还是垃圾,我们拭目以待。有任何问题,联络基督
- 也许你刚刚来到一家公司,他们希望进行一些“可用性”工作。你可能是一名UI设计师,业务分析师,或前端开发人员,一名产品经理,或者负责用户体验部
- 本文实例讲述了wxPython主框架的简单用法,分享给大家供大家参考。具体如下:程序代码如下:import wx class MyApp(w
- 本文实例讲述了python异常和文件处理机制。分享给大家供大家参考,具体如下:1 异常处理Python的异常用tryexceptfinall
- 本文实例讲述了PHP模板引擎Smarty中变量的使用方法。分享给大家供大家参考,具体如下:一、概述:Smarty 是 PHP 众多模板引擎中
- 1,SELECT 语句 在SQL的世界里,最最基础的操作就是SELECT 语句了。在数据库工具下直接采用SQL
- '************************************* '读取文件 &
- JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写。同时也方便了机
- 在向大家详细介绍Linux mysql之前,首先让大家了解下Linux mysql,然后全面介绍Linux mysql,希望对大家有用。1.