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中使用HTML模版的教程
Apr 29 Python
Python判断两个对象相等的原理
Dec 12 Python
numpy中以文本的方式存储以及读取数据方法
Jun 04 Python
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
Jan 05 Python
详解Python locals()的陷阱
Mar 26 Python
python如何给字典的键对应的值为字典项的字典赋值
Jul 05 Python
python读写csv文件方法详细总结
Jul 05 Python
python读出当前时间精度到秒的代码
Jul 05 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
Jul 15 Python
python编写微信公众号首图思路详解
Dec 13 Python
python基础之爬虫入门
May 10 Python
python3中apply函数和lambda函数的使用详解
Feb 28 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
phpMyadmin 用户权限中英对照
2010/04/02 PHP
腾讯QQ php程序员面试题目整理
2010/06/08 PHP
非常精妙的PHP递归调用与静态变量使用
2012/12/16 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
2019/05/21 PHP
JavaScript 给汉字排序实例代码
2008/06/28 Javascript
JavaScript是否可实现多线程  深入理解JavaScript定时机制
2009/12/22 Javascript
让页面上两个div中的滚动条(滑块)同步运动示例
2013/08/07 Javascript
基于jquery异步传输json数据格式实例代码
2013/11/23 Javascript
javascript文件中引用依赖的js文件的方法
2014/03/17 Javascript
用javascript关闭本窗口不弹出询问框的方法
2014/09/12 Javascript
Javascript前端UI框架Kit使用指南之Kitjs简介
2014/11/28 Javascript
jQuery给指定的table动态添加删除行的操作方法
2016/10/12 Javascript
jQuery解析返回的xml和json方法详解
2017/01/05 Javascript
vuejs2.0子组件改变父组件的数据实例
2017/05/10 Javascript
[01:23:59]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 VP vs Secret
2018/04/03 DOTA
Python中os.path用法分析
2015/01/15 Python
Python函数可变参数定义及其参数传递方式实例详解
2015/05/25 Python
教你用python3根据关键词爬取百度百科的内容
2016/08/18 Python
Python3下错误AttributeError: ‘dict’ object has no attribute’iteritems‘的分析与解决
2017/07/06 Python
15行Python代码带你轻松理解令牌桶算法
2018/03/21 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
2018/04/18 Python
python使用Plotly绘图工具绘制水平条形图
2020/03/25 Python
Python 通过打码平台实现验证码的实现
2019/05/13 Python
Python分类测试代码实例汇总
2020/07/23 Python
HTML5中的网络存储实现方式
2020/04/28 HTML / CSS
全球最大的在线橄榄球商店:Lovell Rugby
2018/05/20 全球购物
解释i节点在文件系统中的作用
2013/11/26 面试题
应届大学生求职的自我评价
2013/11/17 职场文书
党员学习十八大感想
2014/01/17 职场文书
四风问题查摆材料
2014/08/25 职场文书
2014年教育教学工作总结
2014/11/13 职场文书
一文读懂go中semaphore(信号量)源码
2021/04/03 Golang
MySQL对数据表已有表进行分区表的实现
2021/11/01 MySQL
PostGIS的安装与入门使用指南
2022/01/18 PostgreSQL
一次SQL如何查重及去重的实战记录
2022/03/13 MySQL