不多说,我们直接上源码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
# -*- coding:UTF-8 -*- ''' 实现文件打包、上传与校验 Created on 2018年1月12日 @author: liuyazhuang ''' from fabric.api import * from fabric.context_managers import * from fabric.contrib.console import confirm env.user = 'root' env.hosts = [ '10.2.2.2' ] env.password = 'cardio-2017' @task @runs_once def tar_task(): #本地打包任务函数,只限执行一次 with lcd( "/data/logs" ): local( "tar -czf access.tar.gz access.log" ) @task def put_task(): #上传文件任务函数 run( "mkdir -p /nginx/logs" ) with cd( "/nginx/logs" ): #put(上传操作)出现异常时,继续执行,非终止 with settings(warn_only = True ): result = put( "/data/logs/access.tar.gz" , "/nginx/logs/access.tar.gz" ) if result.failed and not confirm( "put file failed, Contiunue[Y/N]?" ): #出现异常时,确认用户是否继续,(Y继续) abort( "Aborting file put task!" ) @task def check_task(): #校验文件任务函数 with settings(warn_only = True ): #本地local命令需要配置capture=True才能捕获返回值 lmd5 = local( "md5sum /data/logs/access.tar.gz" , capture = True ).split( ' ' )[ 0 ] rmd5 = run( "md5sum /nginx/logs/access.tar.gz" ).split( ' ' )[ 0 ] #对比本地与远程文件的md5信息 if lmd5 = = rmd5: print "OK" ; else : print "ERROR" @task def execute(): #统一执行tar_task()、put_task()、check_task() tar_task() put_task() check_task() |
本实例分别定义了3个功能函数,实现了文件的打包、上传和校验的功能,且3个功能相互独立,可分开运行
1
2
3
|
fab - f file_handler.py tar_task #文件打包操作 fab - f file_handler.py put_task #文件上传操作 fab - f file_handler.py check_task #文件校验操作 |
也可以通过以下命令组合在一起运行
1
|
fab - f file_handler.py execute |
以上这篇Python 实现文件打包、上传与校验的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/l1028386804/article/details/79042656