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使用新浪微博api上传图片到微博示例
Jan 10 Python
numpy中实现ndarray数组返回符合特定条件的索引方法
Apr 17 Python
Python爬虫常用小技巧之设置代理IP
Sep 13 Python
解决PyCharm同目录下导入模块会报错的问题
Oct 13 Python
将Django项目部署到CentOs服务器中
Oct 18 Python
python简易实现任意位数的水仙花实例
Nov 13 Python
Python设计模式之适配器模式原理与用法详解
Jan 15 Python
python读取指定字节长度的文本方法
Aug 27 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
Nov 11 Python
Python常用库大全及简要说明
Jan 17 Python
Python操作Excel工作簿的示例代码(\*.xlsx)
Mar 23 Python
Python+OpenCV检测灯光亮点的实现方法
Nov 02 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
PHP安装攻略:常见问题解答(三)
2006/10/09 PHP
php5数字型字符串加解密代码
2008/04/24 PHP
实现获取http内容的php函数分享
2014/02/16 PHP
windows下配置apache+php+mysql时出现问题的处理方法
2014/06/20 PHP
基于PHP制作验证码
2016/10/12 PHP
PHP生成图片验证码功能示例
2017/01/12 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
JQery 渐变图片导航效果代码 漂亮
2010/01/01 Javascript
jQuery关于导航条背景切换效果实现示例
2013/09/04 Javascript
鼠标经过tr时,改变tr当前背景颜色
2014/01/13 Javascript
angularjs 处理多个异步请求方法汇总
2015/01/06 Javascript
实例讲解JavaScript的Backbone.js框架中的View视图
2016/05/05 Javascript
Angular的Bootstrap(引导)和Compiler(编译)机制
2016/06/20 Javascript
javascript 广告移动特效的实现代码
2016/06/25 Javascript
分享一个原生的JavaScript拖动方法
2016/09/25 Javascript
微信小程序 富文本转文本实例详解
2016/10/24 Javascript
bootstrap侧边栏圆点导航
2017/01/11 Javascript
JavaScript用200行代码制作打飞机小游戏实例
2017/06/21 Javascript
vue.js项目中实用的小技巧汇总
2017/11/29 Javascript
javascript 通过键名获取键盘的keyCode方法
2017/12/31 Javascript
微信小程序自定义弹窗实现详解(可通用)
2019/07/04 Javascript
微信小程序通过js实现瀑布流布局详解
2019/08/28 Javascript
vue-loader中引入模板预处理器的实现
2019/09/04 Javascript
JS防抖和节流实例解析
2019/09/24 Javascript
python使用win32com库播放mp3文件的方法
2015/05/30 Python
基于Python __dict__与dir()的区别详解
2017/10/30 Python
python实现共轭梯度法
2019/07/03 Python
如何提高python 中for循环的效率
2020/04/15 Python
matlab 计算灰度图像的一阶矩,二阶矩,三阶矩实例
2020/04/22 Python
浅谈Python程序的错误:变量未定义
2020/06/02 Python
可视化pytorch 模型中不同BN层的running mean曲线实例
2020/06/24 Python
好药师网上药店:安全合法的网上药品零售药房
2017/02/15 全球购物
美国高端医师级美容产品电商:BeautifiedYou.com
2017/04/17 全球购物
Halston Heritage官网:简洁的日装,稍显奢华的晚装
2018/11/20 全球购物
求职自我推荐信
2014/06/25 职场文书
不错的求职信范文
2014/07/20 职场文书