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字符串特性及常用字符串方法的简单笔记
Jan 04 Python
python基础教程之五种数据类型详解
Jan 12 Python
python中aioysql(异步操作MySQL)的方法
Apr 11 Python
python读取图片的方式,以及将图片以三维数组的形式输出方法
Jul 03 Python
python实现简单聊天室功能 可以私聊
Jul 12 Python
python-tornado的接口用swagger进行包装的实例
Aug 29 Python
Pytorch中accuracy和loss的计算知识点总结
Sep 10 Python
在Python中画图(基于Jupyter notebook的魔法函数)
Oct 28 Python
Python-jenkins模块获取jobs的执行状态操作
May 12 Python
pycharm sciview的图片另存为操作
Jun 01 Python
pytorch 多分类问题,计算百分比操作
Jul 09 Python
在Python中实现字典反转案例
Dec 05 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
PHP动态变静态原理
2006/11/25 PHP
服务器变量 $_SERVER 的深入解析
2013/07/02 PHP
php的闭包(Closure)匿名函数初探
2016/02/14 PHP
简介PHP的Yii框架中缓存的一些高级用法
2016/03/29 PHP
thinkphp框架下404页面设置 仅三步
2016/05/14 PHP
PHP生成图像验证码的方法小结(2种方法)
2016/07/18 PHP
Laravel框架控制器,视图及模型操作图文详解
2019/12/04 PHP
php设计模式之享元模式分析【星际争霸游戏案例】
2020/03/23 PHP
javascript 播放器 控制
2007/01/22 Javascript
Js 中debug方式
2010/02/07 Javascript
HTML+CSS+JS实现完美兼容各大浏览器的TABLE固定列
2015/04/26 Javascript
jquery+CSS实现的水平布局多级网页菜单效果
2015/08/24 Javascript
jquery实现左右滑动菜单效果代码
2015/08/27 Javascript
javascript+css3 实现动态按钮菜单特效
2016/02/06 Javascript
jQuery post数据至ashx实例详解
2016/11/18 Javascript
layui选项卡效果实现代码
2017/05/19 Javascript
Gulp实现静态网页模块化的方法详解
2018/01/09 Javascript
elementUI中Table表格问题的解决方法
2018/12/04 Javascript
javascript事件监听与事件委托实例详解
2019/08/16 Javascript
微信小程序 多行文本显示...+显示更多按钮和收起更多按钮功能
2019/09/26 Javascript
[01:49]一目了然!DOTA2DotA快捷操作对比第二弹
2014/05/16 DOTA
[01:39:42]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
在Python 不同级目录之间模块的调用方法
2019/01/19 Python
使用Python实现图像标记点的坐标输出功能
2019/08/14 Python
给 TensorFlow 变量进行赋值的方式
2020/02/10 Python
CSS3属性使网站设计增强同时不消弱可用性
2009/08/29 HTML / CSS
HTML5计时器小例子
2013/10/15 HTML / CSS
英国排名第一的最新设计师品牌手表独立零售商:TIC Watches
2016/09/24 全球购物
LORAC官网:美国彩妆品牌
2019/08/27 全球购物
Quiksilver美国官网:始于1969年的优质冲浪服和滑雪板外套
2020/04/20 全球购物
KIKO MILANO俄罗斯官网:意大利领先的化妆品和护肤品品牌
2021/01/09 全球购物
领导班子群众路线与四风问题对照检查材料思想汇报
2014/10/11 职场文书
教育实习指导教师评语
2014/12/31 职场文书
公司地址变更通知
2015/04/25 职场文书
《学会看病》教学反思
2016/02/17 职场文书
Python如何让字典保持有序排列
2022/04/29 Python