Python的批量远程管理和部署工具Fabric用法实例


Posted in Python onJanuary 23, 2015

本文实例讲述了Python的批量远程管理和部署工具Fabric用法。分享给大家供大家参考。具体如下:

Fabric是Python中一个非常强大的批量远程管理和部署工具,常用于在多个远程PC上批量执行SSH任务.

常见的使用方法大概总结如下:

1. 首先,要将批量执行的任务写入到一个fabfile.py中,

# -*- coding:utf-8 -*-  

  

from fabric.api import run, local, roles, env, cd  

env.hosts=[  

    '192.168.1.110',  

    '192.168.1.111',  

    '192.168.1.112'  

]  

env.user="username"  

env.password="password"  

env.port=22  

#env.parallel=True  

#env.skip_bad_hosts=True  

#env.timeout=1  

#env.warn_only=True  

  

# local用于在本地PC执行命令.  

# run用于在远程PC执行命令.  

def ls():  

    with cd('/home/workspace/project'):  

        local('touch 1.log')  

    with cd('/home/workspace/project2'):  

        local('touch 2.log')   

  

#@parallel, 可以设置是否并行执行  

#@serial  

def pull():  

    with cd('/home/workspace/project'):  

        run('git pull')  

  

def clean():  

    with cd('/home/workspace/project'):  

        run('bash clean.sh')  

 

@hosts('192.168.1.113')  

def robot(device):  

    with cd('/home/workspace/project'):  

        run('bash run.sh %s robot && sleep 1' % device)

以上就是一个简单的fabfile.py, 其中定义的函数均对应一个fab中的可执行命令.
其中有两个小的注意事项:

A.在远程机器的run.sh中如果要执行一些非系统常见的工具,最好指定为绝对路径. 且可以适当地使用nohup的方式.

B.执行其他脚本或者命令后最好加上sleep,以防止Fabric过早地关闭与远程PC连接的session,而导致执行任务失败.

2. 执行过程: fabric执行会默认选取当前目录下的fabfile.py文件,

fab clean

fab pull

fab robot:hosts="192.168.1.115",device=5560

可以通过hosts参数给fabric传入指定的远程PC, 该hosts参数的优先级比env.hosts的要高.

也可以给fab中的命令传递参数,如device.

此外,还可以通过fab -f otherFabFile.py clean来指定其他的fabric文件.

如果需要并行执行的话,也可以传递参数如fab -P -z 15 pull, 15表示并行执行的PC数量.

以上,只是一些简单的用法,如果需要更高级的用法,可以关注该项目的github主页 https://github.com/fabric/fabric.

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
python中日期和时间格式化输出的方法小结
Mar 19 Python
Python2.x版本中cmp()方法的使用教程
May 14 Python
python如何通过protobuf实现rpc
Mar 06 Python
Python提取频域特征知识点浅析
Mar 04 Python
运用PyTorch动手搭建一个共享单车预测器
Aug 06 Python
python数据库操作mysql:pymysql、sqlalchemy常见用法详解
Mar 30 Python
pytorch 中的重要模块化接口nn.Module的使用
Apr 02 Python
python 线程的五个状态
Sep 22 Python
Django windows使用Apache实现部署流程解析
Oct 12 Python
python使用scapy模块实现ARP扫描的过程
Jan 21 Python
OpenCV-Python直方图均衡化实现图像去雾
Jun 07 Python
详解Python自动化之文件自动化处理
Jun 21 Python
推荐11个实用Python库
Jan 23 #Python
17个Python小技巧分享
Jan 23 #Python
Windows8下安装Python的BeautifulSoup
Jan 22 #Python
Python实现抓取百度搜索结果页的网站标题信息
Jan 22 #Python
Python中使用异常处理来判断运行的操作系统平台方法
Jan 22 #Python
Python实现把utf-8格式的文件转换成gbk格式的文件
Jan 22 #Python
python中实现php的var_dump函数功能
Jan 21 #Python
You might like
Yii中CArrayDataProvider和CActiveDataProvider区别实例分析
2016/03/02 PHP
PHP页面跳转实现延时跳转的方法
2016/12/10 PHP
解析img图片没找到onerror事件 Stack overflow at line: 0
2013/12/23 Javascript
JavaScript fontcolor方法入门实例(按照指定的颜色来显示字符串)
2014/10/17 Javascript
node.js中的fs.truncate方法使用说明
2014/12/15 Javascript
js实现遮罩层弹出框的方法
2015/01/15 Javascript
jQuery插件Timelinr 实现时间轴特效
2015/10/04 Javascript
Javascript数组Array基础介绍
2016/03/13 Javascript
学JavaScript七大注意事项【必看】
2016/05/04 Javascript
Vue结合原生js实现自定义组件自动生成示例
2017/01/21 Javascript
jQuery中 bind的用法简单介绍
2017/02/13 Javascript
JavaScript 中的 this 简单规则
2017/09/19 Javascript
解决vuejs 使用value in list 循环遍历数组出现警告的问题
2018/09/26 Javascript
layui使用templet格式化表格数据的方法
2019/09/16 Javascript
JavaScript实现飞舞的泡泡效果
2020/02/07 Javascript
Python中列表(list)操作方法汇总
2014/08/18 Python
python读写json文件的简单实现
2017/04/11 Python
python 自动去除空行的实例
2018/07/24 Python
在Python文件中指定Python解释器的方法
2019/02/18 Python
Python-ElasticSearch搜索查询的讲解
2019/02/25 Python
python支付宝支付示例详解
2019/08/22 Python
使用python实现kNN分类算法
2019/10/16 Python
Django使用消息提示简单的弹出个对话框实例
2019/11/15 Python
船餐厅和泰晤士河餐饮游轮:Bateaux London
2018/03/19 全球购物
Solaris操作系统的线程机制
2015/07/28 面试题
什么是servlet
2012/05/08 面试题
银行毕业实习自我鉴定
2013/09/19 职场文书
幼儿园美术教学反思
2014/01/31 职场文书
捐献物资倡议书范文
2014/05/19 职场文书
办公室主任岗位承诺书
2014/05/29 职场文书
2014年教学工作总结
2014/11/13 职场文书
公务员年度考核个人总结
2015/02/12 职场文书
公路施工安全责任书
2015/05/08 职场文书
公司财务管理制度
2015/08/04 职场文书
JS如何使用剪贴板操作Clipboard API
2021/05/17 Javascript
Vue全局事件总线你了解吗
2022/02/24 Vue.js