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创建文件和追加文件内容实例
Oct 21 Python
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
Nov 06 Python
记一次python 内存泄漏问题及解决过程
Nov 29 Python
使用python实现抓取腾讯视频所有电影的爬虫
Apr 15 Python
python里运用私有属性和方法总结
Jul 08 Python
Django 缓存配置Redis使用详解
Jul 23 Python
django echarts饼图数据动态加载的实例
Aug 12 Python
Django集成celery发送异步邮件实例
Dec 17 Python
python爬虫容易学吗
Jun 02 Python
python实现最短路径的实例方法
Jul 19 Python
Python3中的tuple函数知识点讲解
Jan 03 Python
Matplotlib可视化之添加让统计图变得简单易懂的注释
Jun 11 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函数memory_get_usage获取PHP内存清耗量的方法
2011/12/06 PHP
关于URL最大长度限制的相关资料查证
2014/12/23 PHP
php控制文件下载速度的方法
2015/03/24 PHP
Laravel中Trait的用法实例详解
2016/03/16 PHP
thinkPHP交易详情查询功能详解
2016/12/02 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
Jquery ajax执行顺序 返回自定义错误信息(实例讲解)
2013/11/06 Javascript
javascript中不等于的代码是什么怎么写
2013/12/29 Javascript
防止登录页面出现在frame中js代码
2014/07/22 Javascript
javascript实现浏览器窗口传递参数的方法
2014/09/03 Javascript
AngularJS基础知识笔记之过滤器
2015/05/10 Javascript
javascript中使用正则表达式清理table样式的代码
2020/04/01 Javascript
正则验证小数点后面只能有两位数的方法
2017/02/28 Javascript
原生js实现简单的Ripple按钮实例代码
2017/03/24 Javascript
JQuery中queue方法用法示例
2019/01/31 jQuery
微信小程序网络请求实现过程解析
2019/11/06 Javascript
[40:16]TFT vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
python实现应用程序在右键菜单中添加打开方式功能
2017/01/09 Python
python中关于for循环的碎碎念
2017/06/30 Python
python验证码识别的示例代码
2017/09/21 Python
python3 实现一行输入,空格隔开的示例
2018/11/14 Python
解决python3运行selenium下HTMLTestRunner报错的问题
2018/12/27 Python
Python合并同一个文件夹下所有PDF文件的方法
2019/03/11 Python
11个Python3字典内置方法大全与示例汇总
2019/05/13 Python
Django中使用 Closure Table 储存无限分级数据
2019/06/06 Python
python中dict使用方法详解
2019/07/17 Python
tensorflow对图像进行拼接的例子
2020/02/05 Python
台湾旅游网站:灿星旅游
2018/10/11 全球购物
size?法国官网:英国伦敦的球鞋精品店
2020/03/15 全球购物
师德个人剖析材料
2014/02/02 职场文书
关于母亲节的感言
2014/02/04 职场文书
土木工程专业本科生求职信
2014/10/01 职场文书
2015年社会实践个人总结
2015/03/06 职场文书
2016高考寄语或鼓励的话语
2015/12/04 职场文书
详解Python小数据池和代码块缓存机制
2021/04/07 Python
SQL Server查询某个字段在哪些表中存在
2022/03/03 SQL Server