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多进程操作实例
Nov 21 Python
浅谈scrapy 的基本命令介绍
Jun 13 Python
python中的break、continue、exit()、pass全面解析
Aug 05 Python
Python星号*与**用法分析
Feb 02 Python
利用Pandas 创建空的DataFrame方法
Apr 08 Python
Python 读写文件的操作代码
Sep 20 Python
Python实现计算字符串中出现次数最多的字符示例
Jan 21 Python
python3 property装饰器实现原理与用法示例
May 15 Python
Pycharm 字体大小调整设置的方法实现
Sep 27 Python
Python面向对象之私有属性和私有方法应用案例分析
Dec 31 Python
python如何用matplotlib创建三维图表
Jan 26 Python
Python手拉手教你爬取贝壳房源数据的实战教程
May 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
如何突破PHP程序员的技术瓶颈分析
2011/07/17 PHP
php命令行用法入门实例教程
2014/10/27 PHP
PHP编程入门的基本语法知识点总结
2016/01/26 PHP
Yii2实现自定义独立验证器的方法
2017/05/05 PHP
php表单习惯用的正则表达式
2017/10/11 PHP
JavaScript入门教程(9) Document文档对象
2009/01/31 Javascript
js中字符替换函数String.replace()使用技巧
2011/08/14 Javascript
Jquery之Ajax运用 学习运用篇
2011/09/26 Javascript
offsetHeight在OnLoad中获取为0的现象
2013/07/22 Javascript
javascript生成json数据简单示例分享
2014/02/14 Javascript
分享20个提升网站界面体验的jQuery插件
2014/12/15 Javascript
JavaScript 事件绑定及深入
2015/04/13 Javascript
BootstrapTable请求数据时设置超时(timeout)的方法
2017/01/22 Javascript
vue按需加载组件webpack require.ensure的方法
2017/12/13 Javascript
js+html实现周岁年龄计算器
2019/06/25 Javascript
Vue退出登录时清空缓存的实现
2019/11/12 Javascript
Vue.directive 实现元素scroll逻辑复用
2019/11/29 Javascript
JavaScript简易计算器制作
2020/01/17 Javascript
JavaScript canvas仿代码流瀑布
2020/02/10 Javascript
python如何实现异步调用函数执行
2019/07/08 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
2020/01/08 Python
Python列表切片常用操作实例解析
2020/03/10 Python
使用Keras构造简单的CNN网络实例
2020/06/29 Python
Kiwi.com中国:找到特价机票并发现新目的地
2019/10/27 全球购物
请写出 BOOL flag 与"零值"比较的 if 语句
2016/02/29 面试题
大二学习计划书范文
2014/04/27 职场文书
反邪教宣传工作方案
2014/05/07 职场文书
水污染治理工程专业求职信
2014/06/14 职场文书
商场消防安全责任书
2014/07/29 职场文书
建筑工地文明标语
2014/10/09 职场文书
2015年度优秀员工推荐信
2015/03/23 职场文书
《棉鞋里的阳光》教学反思
2016/02/20 职场文书
2016年学校爱国卫生月活动总结
2016/04/06 职场文书
pytorch中Schedule与warmup_steps的用法说明
2021/05/24 Python
Go语言应该什么情况使用指针
2021/07/25 Golang