Fabric 应用案例


Posted in Python onAugust 28, 2016

示例1:文件打包,上传与校验
我们时常做一些文件包分发的工作,实施步骤一般是先压缩打包,在批量上传至目标服务器,最后做一致性校验,本案例通过put()方法实现文件的上传,通过对比本地与远程主机文件的md5,最终实现文件一致性校验。

#!/usr/bin/env python
from fabric.api import *
from fabric.context_managers import *
from fabric.contrib.console import confirm
env.user = 'root'
env.hosts = ['192.168.1.23','192.168.1.24']
env.password = '123456'
 
@runs_once
def tar_task(): #本地打包任务函数,只限执行一次
  with lcd('/'):
    local("tar zcvf auto.tar.gz auto")
 
def put_task():
  run('mkdir /data') #上传任务函数
  with cd("/data"):
    with settings(warn_only=True):
      result = put("/auto.tar.gz","/data") #put上传出现异常时继续执行,非中止
    if result.failed and not confirm("put file failed, Continue[Y/N]?"):
      abort('Aboring file put task!') #出现异常时,确认用户是否继续
 
def check_task():
  with settings(warn_only=True):
    lmd5 = local("md5sum /auto.tar.gz",capture=True).split(' ')[0]
    rmd5 = run("md5sum /data/auto.tar.gz").split(' ')[0]
    if lmd5 == rmd5: #对比本地及远程文件MD5信息
      print "ok"
    else:
      print ERROR
def go():
  tar_task()
  put_task()
  check_task()
Python 相关文章推荐
Python实现文件内容批量追加的方法示例
Aug 29 Python
Python批量合并有合并单元格的Excel文件详解
Apr 05 Python
Django项目中用JS实现加载子页面并传值的方法
May 28 Python
浅谈pycharm下找不到sqlalchemy的问题
Dec 03 Python
python合并已经存在的sheet数据到新sheet的方法
Dec 11 Python
Python解决线性代数问题之矩阵的初等变换方法
Dec 12 Python
python 移动图片到另外一个文件夹的实例
Jan 10 Python
django数据库自动重连的方法实例
Jul 21 Python
python实现数据结构中双向循环链表操作的示例
Oct 09 Python
python分布式爬虫中消息队列知识点详解
Nov 26 Python
python 用opencv实现霍夫线变换
Nov 27 Python
Python批量解压&压缩文件夹的示例代码
Apr 04 Python
Python两个内置函数 locals 和globals(学习笔记)
Aug 28 #Python
Python 提取dict转换为xml/json/table并输出的实现代码
Aug 28 #Python
python解决方案:WindowsError: [Error 2]
Aug 28 #Python
详解Python中的文件操作
Aug 28 #Python
Python环境变量设置方法
Aug 28 #Python
Python代码解决RenderView窗口not found问题
Aug 28 #Python
python 文件操作api(文件操作函数)
Aug 28 #Python
You might like
综合图片计数器
2006/10/09 PHP
php中过滤非法字符的具体实现
2013/10/29 PHP
ThinkPHP的MVC开发机制实例解析
2014/08/23 PHP
php操作mongoDB实例分析
2014/12/29 PHP
smarty简单应用实例
2015/11/03 PHP
laravel 5.3 单用户登录简单实现方法
2019/10/14 PHP
Javascript学习笔记7 原型链的原理
2010/01/11 Javascript
jQuery中[attribute^=value]选择器用法实例
2014/12/31 Javascript
JS是按值传递还是按引用传递
2015/01/30 Javascript
jQuery取消特定的click事件
2016/02/29 Javascript
JavaScript必知必会(七)js对象继承
2016/06/08 Javascript
@ResponseBody 和 @RequestBody 注解的区别
2017/03/08 Javascript
详解vue-router 2.0 常用基础知识点之导航钩子
2017/05/10 Javascript
JavaScript实现各种排序的代码详解
2017/08/28 Javascript
express 项目分层实践详解
2018/12/10 Javascript
JS使用栈判断给定字符串是否是回文算法示例
2019/03/04 Javascript
express如何解决ajax跨域访问session失效问题详解
2019/06/20 Javascript
[01:59]深扒TI7聊天轮盘语音出处 1
2017/05/11 DOTA
Python中的filter()函数的用法
2015/04/27 Python
python3 遍历删除特定后缀名文件的方法
2018/04/23 Python
python线程池threadpool实现篇
2018/04/27 Python
快速解决pandas.read_csv()乱码的问题
2018/06/15 Python
Pandas统计重复的列里面的值方法
2019/01/30 Python
PyQt5 QTable插入图片并动态更新的实例
2019/06/18 Python
Python 堆叠柱状图绘制方法
2019/07/29 Python
解决pandas展示数据输出时列名不能对齐的问题
2019/11/18 Python
Django 5种类型Session使用方法解析
2020/04/29 Python
基于Python 的语音重采样函数解析
2020/07/06 Python
Python实现小黑屋游戏的完整实例
2021/01/06 Python
初中生自我鉴定
2014/02/04 职场文书
经济信息系毕业生自荐信范文
2014/03/15 职场文书
升旗仪式主持词
2014/03/19 职场文书
禁毒宣传活动总结
2014/08/26 职场文书
餐厅如何利用“营销策略”扭转亏本局面
2019/10/15 职场文书
python中取整数的几种方法
2021/11/07 Python
详解Python中*args和**kwargs的使用
2022/04/07 Python