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入门篇之编程习惯与特点
Oct 17 Python
Python实现栈的方法
May 26 Python
Python类的用法实例浅析
May 27 Python
Python图算法实例分析
Aug 13 Python
简单谈谈Python中的反转字符串问题
Oct 24 Python
Python模拟随机游走图形效果示例
Feb 06 Python
python找出完数的方法
Nov 12 Python
Python从Excel中读取日期一列的方法
Nov 28 Python
python获取本机所有IP地址的方法
Dec 26 Python
Python 图像处理: 生成二维高斯分布蒙版的实例
Jul 04 Python
Python实现初始化不同的变量类型为空值
Jun 02 Python
超级详细实用的pycharm常用快捷键
May 12 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
十大催泪虐心动漫电影,有几部你还没看
2020/03/04 日漫
php 连接mysql连接被重置的解决方法
2011/02/15 PHP
PHP关联链接常用代码
2012/11/05 PHP
双击滚屏-常用推荐
2006/11/29 Javascript
js异或加解密效果代码
2008/06/25 Javascript
javascript cookies 设置、读取、删除实例代码
2010/04/12 Javascript
js内存泄露的几种情况详细探讨
2013/05/31 Javascript
jquery 获取dom固定元素 添加样式的简单实例
2014/02/04 Javascript
ECMAScript 6即将带给我们新的数组操作方法前瞻
2015/01/06 Javascript
浅谈Node.js:Buffer模块
2016/12/05 Javascript
JavaScript实现公历转农历功能示例
2017/02/13 Javascript
NodeJS基础API搭建服务器详细过程记录
2017/04/01 NodeJs
基于jQuery的左滑出现删除按钮的示例
2017/08/29 jQuery
JS将网址url转化为JSON格式的方法
2018/07/02 Javascript
angularjs下ng-repeat点击元素改变样式的实现方法
2018/09/12 Javascript
基于vue通用表单解决方案的思考与分析
2019/03/16 Javascript
简单使用webpack打包文件的实现
2019/10/29 Javascript
JS闭包原理及其使用场景解析
2020/12/03 Javascript
Python和php通信乱码问题解决方法
2014/04/15 Python
python爬虫之线程池和进程池功能与用法详解
2018/08/02 Python
Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算
2018/12/28 Python
对Python3 * 和 ** 运算符详解
2019/02/16 Python
由Python编写的MySQL管理工具代码实例
2019/04/09 Python
Python pandas.DataFrame 找出有空值的行
2019/09/09 Python
python打印n位数“水仙花数”(实例代码)
2019/12/25 Python
django表单中的按钮获取数据的实例分析
2020/07/31 Python
python中把元组转换为namedtuple方法
2020/12/09 Python
利用HTML5中的Canvas绘制一张笑脸的教程
2015/05/07 HTML / CSS
域名注册、建站工具、网页主机、SSL证书:Dynadot
2017/01/06 全球购物
英国空调、除湿机和通风设备排名第一:Air Con Centre
2019/02/25 全球购物
石油工程专业毕业生求职信
2014/04/13 职场文书
法定代表人授权委托书格式
2014/10/14 职场文书
物流业务员岗位职责
2015/04/03 职场文书
2015年手术室工作总结
2015/05/11 职场文书
奥巴马开学演讲观后感
2015/06/12 职场文书
六一儿童节致辞稿(3篇)
2019/07/11 职场文书