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编程中基本的数学计算使用
Feb 04 Python
python中字符串类型json操作的注意事项
May 02 Python
浅谈Python基础之I/O模型
May 11 Python
对Python中DataFrame按照行遍历的方法
Apr 08 Python
对pandas中时间窗函数rolling的使用详解
Nov 28 Python
基于python cut和qcut的用法及区别详解
Nov 22 Python
Python with语句和过程抽取思想
Dec 23 Python
python 计算方位角实例(根据两点的坐标计算)
Jan 17 Python
使用Python来做一个屏幕录制工具的操作代码
Jan 18 Python
Python带参数的装饰器运行原理解析
Jun 09 Python
Python数据可视化实现多种图例代码详解
Jul 14 Python
python如何查找列表中元素的位置
May 30 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
广播爱好者需要了解的天线知识
2021/03/01 无线电
[原创]php求圆周率的简单实现方法
2016/05/30 PHP
PHP文件后缀不强制为.php方法
2019/03/31 PHP
PHP过滤器 filter_has_var() 函数用法实例分析
2020/04/23 PHP
ASP.NET中基于JQUERY的高性能的TreeView补充
2011/02/23 Javascript
如何使用jquery控制CSS样式,并且取消Css样式(如背景色,有实例)
2013/07/09 Javascript
JS 弹出层 定位至屏幕居中示例
2014/05/21 Javascript
javascript中for/in循环及使用技巧
2015/09/01 Javascript
瀑布流的实现方式(原生js+jquery+css3)
2020/06/28 Javascript
jQuery判断邮箱格式对错实例代码讲解
2017/04/12 jQuery
微信小程序 实例开发总结
2017/04/26 Javascript
javascript定时器取消定时器及优化方法
2017/07/08 Javascript
Js面试算法详解
2018/04/08 Javascript
vue addRoutes实现动态权限路由菜单的示例
2018/05/15 Javascript
vue单页缓存存在的问题及解决方案(小结)
2018/09/25 Javascript
JS执行控制之节流模式实例分析
2018/12/21 Javascript
python合并文本文件示例
2014/02/07 Python
实例讲解Python编程中@property装饰器的用法
2016/06/20 Python
python里使用正则的findall函数的实例详解
2017/10/19 Python
python实现随机梯度下降法
2020/03/24 Python
Python的UTC时间转换讲解
2019/02/26 Python
利用matplotlib实现根据实时数据动态更新图形
2019/12/13 Python
python代码实现将列表中重复元素之间的内容全部滤除
2020/05/22 Python
python中os包的用法
2020/06/01 Python
Python基础教程之输入输出和运算符
2020/07/26 Python
Python自动巡检H3C交换机实现过程解析
2020/08/14 Python
python如何提升爬虫效率
2020/09/27 Python
实例讲解使用CSS实现多边框和透明边框的方法
2015/09/08 HTML / CSS
解决html5中video标签无法播放mp4问题的办法
2017/05/07 HTML / CSS
论文诚信承诺书
2014/05/23 职场文书
2014年效能监察工作总结
2014/11/21 职场文书
收费员岗位职责
2015/02/14 职场文书
2015大学生党员自我评价范文
2015/03/03 职场文书
2016年小学圣诞节活动总结
2016/03/31 职场文书
Django开发RESTful API实现增删改查(入门级)
2021/05/10 Python
MySQL库表太大怎么办? 数据库分库分表项目实践
2022/04/11 MySQL