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 面向对象 成员的访问约束
Dec 23 Python
python选择排序算法实例总结
Jul 01 Python
python实现应用程序在右键菜单中添加打开方式功能
Jan 09 Python
Python遍历某目录下的所有文件夹与文件路径
Mar 15 Python
python+mysql实现学生信息查询系统
Feb 21 Python
django框架使用orm实现批量更新数据的方法
Jun 21 Python
通过cmd进入python的实例操作
Jun 26 Python
python 上下文管理器及自定义原理解析
Nov 19 Python
python opencv实现gif图片分解的示例代码
Dec 13 Python
基于python实现破解滑动验证码过程解析
May 28 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
Jun 03 Python
详解Python中list[::-1]的几种用法
Nov 16 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
ajax实现无刷新分页(php)
2010/07/18 PHP
Apache连接PHP后无法启动问题解决思路
2015/06/18 PHP
PHP抓取网页、解析HTML常用的方法总结
2015/07/01 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
2016/10/17 PHP
php实现解析xml并生成sql语句的方法
2018/02/03 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
2019/05/05 PHP
PHP使用Session实现上传进度功能详解
2019/08/06 PHP
Laravel获取当前请求的控制器和方法以及中间件的例子
2019/10/11 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
jquery 可排列的表实现代码
2009/11/13 Javascript
Jquery判断$("#id")获取的对象是否存在的方法
2013/09/25 Javascript
JavaScript 学习笔记之变量及其作用域
2015/01/14 Javascript
AngularJS入门教程之多视图切换用法示例
2016/11/02 Javascript
AngularJS框架的ng-app指令与自动加载实现方法分析
2017/01/04 Javascript
jQuery Ajax前后端使用JSON进行交互示例
2017/03/17 Javascript
解决js相同的正则多次调用test()返回的值却不同的问题
2018/10/10 Javascript
使用python删除nginx缓存文件示例(python文件操作)
2014/03/26 Python
python学习笔记:字典的使用示例详解
2014/06/13 Python
wxpython中Textctrl回车事件无效的解决方法
2016/07/21 Python
利用python实现简单的循环购物车功能示例代码
2017/07/05 Python
火车票抢票python代码公开揭秘!
2018/03/08 Python
python 编写简单网页服务器的实例
2018/06/01 Python
使用Python+wxpy 找出微信里把你删除的好友实例
2019/02/21 Python
详解python中sort排序使用
2019/03/23 Python
Django自定义列表 models字段显示方式
2020/04/03 Python
美国一站式电动和手动工具商店:International Tool
2020/11/26 全球购物
产品工艺师的岗位职责
2013/11/15 职场文书
企业门卫岗位职责
2013/12/12 职场文书
4s店总经理岗位职责
2013/12/31 职场文书
审计主管岗位职责
2014/01/31 职场文书
80后职场人的职业生涯规划
2014/03/08 职场文书
减负增效提质方案
2014/05/23 职场文书
优秀应届生求职信
2014/06/16 职场文书
企业标语大全
2014/07/01 职场文书
2015年度残疾人工作总结
2015/05/14 职场文书
python中的mysql数据库LIKE操作符详解
2021/07/01 MySQL