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解析xml文件实例分享
Dec 04 Python
python读取html中指定元素生成excle文件示例
Apr 03 Python
Python正则表达式分组概念与用法详解
Jun 24 Python
Python三种遍历文件目录的方法实例代码
Jan 19 Python
Python3之文件读写操作的实例讲解
Jan 23 Python
Django框架实现逆向解析url的方法
Jul 04 Python
python 拼接文件路径的方法
Oct 23 Python
python在回调函数中获取返回值的方法
Feb 22 Python
Python jieba库用法及实例解析
Nov 04 Python
使用Python开发个京东上抢口罩的小实例(仅作技术研究学习使用)
Mar 10 Python
Python如何测试stdout输出
Aug 10 Python
python代码实现扫码关注公众号登录的实战
Nov 01 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面向对象的方法重载两种版本比较
2008/09/08 PHP
php中设置index.php文件为只读的方法
2013/02/06 PHP
php 删除目录下N分钟前创建的所有文件的实现代码
2013/08/10 PHP
PHP按行读取、处理较大CSV文件的代码实例
2014/04/09 PHP
php获取错误信息的方法
2015/07/17 PHP
PHP curl 或 file_get_contents 获取需要授权页面的方法
2017/05/05 PHP
php设计模式之抽象工厂模式分析【星际争霸游戏案例】
2020/01/23 PHP
js获取TreeView控件选中节点的Text和Value值的方法
2012/11/24 Javascript
基于JavaScript 声明全局变量的三种方式详解
2013/05/07 Javascript
图片Slider 带左右按钮的js示例
2013/08/30 Javascript
JS中mouseover和mouseout多次触发问题如何解决
2016/06/06 Javascript
JS原型继承四步曲及原型继承图一览
2017/11/28 Javascript
JS运动改变单物体透明度的方法分析
2018/01/23 Javascript
nodejs之koa2请求示例(GET,POST)
2018/08/07 NodeJs
jQuery实现基本淡入淡出效果的方法详解
2018/09/05 jQuery
解决vue-cli webpack打包后加载资源的路径问题
2018/09/25 Javascript
微信小程序自定义联系人弹窗
2020/05/26 Javascript
iview实现图片上传功能
2020/06/29 Javascript
Python操作sqlite3快速、安全插入数据(防注入)的实例
2014/04/26 Python
python实现带错误处理功能的远程文件读取方法
2015/04/29 Python
Python中使用ElementTree解析XML示例
2015/06/02 Python
Python读取视频的两种方法(imageio和cv2)
2018/04/15 Python
在django中实现页面倒数几秒后自动跳转的例子
2019/08/16 Python
python基于三阶贝塞尔曲线的数据平滑算法
2019/12/27 Python
在keras中model.fit_generator()和model.fit()的区别说明
2020/06/17 Python
Python爬虫设置ip代理过程解析
2020/07/20 Python
Python 数据分析之逐块读取文本的实现
2020/12/14 Python
骆驼官方商城:CAMEL
2016/11/22 全球购物
旷课检讨书范文
2015/01/27 职场文书
家长会后的感想
2015/08/11 职场文书
党员公开承诺书(2016最新版)
2016/03/24 职场文书
python使用pymysql模块操作MySQL
2021/06/16 Python
SQL Server表分区删除详情
2021/10/16 SQL Server
JVM的类加载器和双亲委派模式你了解吗
2022/03/13 Java/Android
canvas 中如何实现物体的框选
2022/08/05 Javascript
JS前端使用Canvas快速实现手势解锁特效
2022/09/23 Javascript