#!/usr/bin/env python
#encoding=utf-8
from fabric.api import *
from fabric.context_managers import *
from fabric.contrib.console import confirm
env.user='root'
env.hosts=['192.168.1.1']
env.password='mypassword'
@task
@runs_once
def tar_task(): #本地打包函数
with lcd("/data/logs"):
local("tar -cvzf access.tar.gz * --exclude 1.txt") #打包所有,1.txt除外
@task
def put_task(): #上传文件到remote
run("mkdir -p /data/logs")
with cd("/data/logs"):
with settings(warn_only=True): #put上传出现异常时继续执行,非终止
result=put("/data/logs/access.tar.gz","/data/logs/access.tar.gz")
if result.failed and not confirm("put file failed,continue[Y/N]?"):
abort("Aborting file put task!") #出现异常时,确认是否继续
@task
def check_task(): #校验文件
with settings(warn_only=True):
lmd5=local("md5sum /data/logs/access.tar.gz",capture=True).split(' ')[0] #本地local需加capture=True才能捕获返回值,split(' ')[0]以空格为间隔,取第一个值(即md5值)
rmd5=run("md5sum /data/logs/access.tar.gz").split(' ')[0]
if lmd5==rmd5:
print "OK"
else:
print "ERROR"
@task
def go():
tar_task()
put_task()
#encoding=utf-8
from fabric.api import *
from fabric.context_managers import *
from fabric.contrib.console import confirm
env.user='root'
env.hosts=['192.168.1.1']
env.password='mypassword'
@task
@runs_once
def tar_task(): #本地打包函数
with lcd("/data/logs"):
local("tar -cvzf access.tar.gz * --exclude 1.txt") #打包所有,1.txt除外
@task
def put_task(): #上传文件到remote
run("mkdir -p /data/logs")
with cd("/data/logs"):
with settings(warn_only=True): #put上传出现异常时继续执行,非终止
result=put("/data/logs/access.tar.gz","/data/logs/access.tar.gz")
if result.failed and not confirm("put file failed,continue[Y/N]?"):
abort("Aborting file put task!") #出现异常时,确认是否继续
@task
def check_task(): #校验文件
with settings(warn_only=True):
lmd5=local("md5sum /data/logs/access.tar.gz",capture=True).split(' ')[0] #本地local需加capture=True才能捕获返回值,split(' ')[0]以空格为间隔,取第一个值(即md5值)
rmd5=run("md5sum /data/logs/access.tar.gz").split(' ')[0]
if lmd5==rmd5:
print "OK"
else:
print "ERROR"
@task
def go():
tar_task()
put_task()
check_task()
使用:fab -f tar-up.py -l 查看显示函数
fab -f tar-up.py go 执行