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使用matplotlib简单绘图示例
Feb 01 Python
ubuntu安装sublime3并配置python3环境的方法
Mar 15 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
Jul 25 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
Oct 11 Python
python PyQt5/Pyside2 按钮右击菜单实例代码
Aug 17 Python
pytorch实现focal loss的两种方式小结
Jan 02 Python
python如何实现不可变字典inmutabledict
Jan 08 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
Jun 05 Python
Python调用百度OCR实现图片文字识别的示例代码
Jul 17 Python
怎么解决pycharm license Acti的方法
Oct 28 Python
Python 实现进度条的六种方式
Jan 06 Python
Python机器学习应用之基于线性判别模型的分类篇详解
Jan 18 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使用Jpgraph绘制复杂X-Y坐标图的方法
2015/06/10 PHP
Javascript 函数对象的多重身份
2009/06/28 Javascript
一个简单的JavaScript数据缓存系统实现代码
2010/10/24 Javascript
Javascript对象中关于setTimeout和setInterval的this介绍
2012/07/21 Javascript
ie6下png图片背景不透明的解决办法使用js实现
2013/01/11 Javascript
jQuery焦点图轮播特效代码分享(3款)
2015/09/05 Javascript
基于jQuery+PHP+Mysql实现在线拍照和在线浏览照片
2015/09/06 Javascript
JS数组合并push与concat区别分析
2015/12/17 Javascript
jQuery插件imgPreviewQs实现上传图片预览
2016/01/15 Javascript
使用bootstrapValidator插件进行动态添加表单元素并校验
2016/09/28 Javascript
ES6模块化的import和export用法方法总结
2017/08/08 Javascript
使用npm安装最新版本nodejs
2018/01/18 NodeJs
vue使用v-for实现hover点击效果
2018/09/29 Javascript
VUE 单页面使用 echart 窗口变化时的用法
2020/07/30 Javascript
js实现删除json中指定的元素
2020/09/22 Javascript
JavaScript 声明私有变量的两种方式
2021/02/05 Javascript
python获得linux下所有挂载点(mount points)的方法
2015/04/29 Python
Python操作串口的方法
2015/06/17 Python
Python网络爬虫中的同步与异步示例详解
2018/02/03 Python
python3操作微信itchat实现发送图片
2018/02/24 Python
DataFrame中去除指定列为空的行方法
2018/04/08 Python
Python中的枚举类型示例介绍
2019/01/09 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
2020/01/18 Python
浅谈keras.callbacks设置模型保存策略
2020/06/18 Python
OpenCV Python实现图像指定区域裁剪
2021/03/12 Python
英国第二大营养品供应商:Vitabiotics
2016/10/01 全球购物
FOREO官方网站:LUNA露娜洁面仪
2016/11/28 全球购物
包装类的功能、种类、常用方法
2012/01/27 面试题
工程现场管理求职自荐信
2013/10/02 职场文书
打架检讨书100字
2014/01/19 职场文书
毕业自我鉴定怎么写
2014/03/25 职场文书
元旦文艺汇演主持词
2014/03/26 职场文书
常务副总经理岗位职责
2014/04/12 职场文书
食品安全标语
2014/06/07 职场文书
公司年终奖分配方案
2014/06/16 职场文书
不服从公司安排检讨书
2014/09/24 职场文书