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实现的简单文件传输服务器和客户端
Apr 08 Python
编写Python脚本来获取mp3文件tag信息的教程
May 04 Python
在Ubuntu系统下安装使用Python的GUI工具wxPython
Feb 18 Python
完美解决Python2操作中文名文件乱码的问题
Jan 04 Python
python中Pycharm 输出中文或打印中文乱码现象的解决办法
Jun 16 Python
python用pandas数据加载、存储与文件格式的实例
Dec 07 Python
django多个APP的urls设置方法(views重复问题解决)
Jul 19 Python
Django 外键的使用方法详解
Jul 19 Python
DataFrame 数据合并实现(merge,join,concat)
Jun 14 Python
Python迭代器协议及for循环工作机制详解
Jul 14 Python
python爬取音频下载的示例代码
Oct 19 Python
pytorch--之halfTensor的使用详解
May 24 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
DC《神奇女侠2》因疫情推迟上映 温子仁新恐怖片《恶性》撤档
2020/04/09 欧美动漫
php 移除数组重复元素的一点说明
2008/11/27 PHP
PHP CKEditor 上传图片实现代码
2009/11/06 PHP
PHP IPV6正则表达式验证代码
2010/02/16 PHP
Drupal 添加模块出现莫名其妙的错误的解决方法(往往出现在模块较多时)
2011/04/18 PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
2017/05/29 PHP
JS日历 推荐
2006/12/03 Javascript
jquery 仿QQ校友的DIV模拟窗口效果源码
2010/03/24 Javascript
JS 去除Array中的null值示例代码
2013/11/20 Javascript
js获取客户端外网ip的简单实例
2013/11/21 Javascript
在JavaScript中判断整型的N种方法示例介绍
2014/06/18 Javascript
jquery用offset()方法获得元素的xy坐标
2014/09/06 Javascript
zepto.js中tap事件阻止冒泡的实现方法
2015/02/12 Javascript
JS实现样式清新的横排下拉菜单效果
2015/10/09 Javascript
Bootstrap每天必学之缩略图与警示窗
2015/11/29 Javascript
ajax级联菜单实现方法实例分析
2016/11/28 Javascript
Bootstrap源码解读模态弹出框(11)
2016/12/28 Javascript
js+html5实现半透明遮罩层弹框效果
2020/08/24 Javascript
Webpack 服务器端代码打包的示例代码
2017/09/19 Javascript
微信小程序实现随机验证码功能
2018/12/20 Javascript
Vue axios 将传递的json数据转为form data的例子
2019/10/29 Javascript
[10:39]DOTA2上海特级锦标赛音乐会纪录片
2016/03/21 DOTA
Flask实现图片的上传、下载及展示示例代码
2018/08/03 Python
Python中dict和set的用法讲解
2019/03/28 Python
python 实现将多条曲线画在一幅图上的方法
2019/07/07 Python
python离线安装外部依赖包的实现
2020/02/13 Python
解决django migrate报错ORA-02000: missing ALWAYS keyword
2020/07/02 Python
CSS3 Calc实现滚动条出现页面不跳动问题
2017/09/14 HTML / CSS
网吧消防安全制度
2014/01/28 职场文书
商业街策划方案
2014/05/31 职场文书
信息与计算机科学职业规划范文:成为一艘有方向的船
2014/09/11 职场文书
党员四风自我剖析材料
2014/10/07 职场文书
信息技术远程培训心得体会
2016/01/09 职场文书
公司员工违法违章行为检讨书
2019/06/24 职场文书
Win11 BitLocker 驱动器加密
2022/04/19 数码科技
CSS 左边固定宽右边自适应的6种方法
2022/05/15 HTML / CSS