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转换摩斯密码示例
Feb 16 Python
Python中使用 Selenium 实现网页截图实例
Jul 18 Python
Python 字典dict使用介绍
Nov 30 Python
玩转python爬虫之URLError异常处理
Feb 17 Python
快速实现基于Python的微信聊天机器人示例代码
Mar 03 Python
python 第三方库的安装及pip的使用详解
May 11 Python
Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
Aug 21 Python
Python实现在线暴力破解邮箱账号密码功能示例【测试可用】
Sep 06 Python
Python拼接微信好友头像大图的实现方法
Aug 01 Python
python实现彩色图转换成灰度图
Jan 15 Python
代码详解django中数据库设置
Jan 28 Python
python中matplotlib实现随鼠标滑动自动标注代码
Apr 23 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执行多个存储过程的方法【基于thinkPHP】
2016/11/08 PHP
PHP filter_var() 函数, 验证判断EMAIL,URL等
2021/03/09 PHP
jquery animate 动画效果使用说明
2009/11/04 Javascript
js获取指定日期前后的日期代码
2013/08/20 Javascript
回车直接实现点击某按钮的效果即触发单击事件
2014/02/27 Javascript
Javascript WebSocket使用实例介绍(简明入门教程)
2014/04/16 Javascript
浅谈JavaScript function函数种类
2014/12/29 Javascript
JQuery中解决重复动画的方法
2016/10/17 Javascript
设置jquery UI 控件的大小方法
2016/12/12 Javascript
js仿小米手机上下滑动效果
2017/02/05 Javascript
基于jQuery实现一个marquee无缝滚动的插件
2017/03/09 Javascript
深入理解Node中的buffer模块
2017/06/03 Javascript
JQueryMiniUI按照时间进行查询的实现方法
2017/06/07 jQuery
详解使用create-react-app添加css modules、sasss和antd
2018/07/31 Javascript
vue异步axios获取的数据渲染到页面的方法
2018/08/09 Javascript
JS数组方法slice()用法实例分析
2020/01/18 Javascript
使用Python进行稳定可靠的文件操作详解
2013/12/31 Python
深入理解NumPy简明教程---数组3(组合)
2016/12/17 Python
python解析html提取数据,并生成word文档实例解析
2018/01/22 Python
利用Python读取txt文档的方法讲解
2018/06/23 Python
Python实现点阵字体读取与转换的方法
2019/01/29 Python
超简单使用Python换脸实例
2019/03/27 Python
Python3基于print打印带颜色字符串
2020/07/06 Python
Python实现JS解密并爬取某音漫客网站
2020/10/23 Python
python中类与对象之间的关系详解
2020/12/16 Python
python中re模块知识点总结
2021/01/17 Python
详解CSS3实现响应式手风琴效果
2020/06/10 HTML / CSS
LN-CC日本:高端男装和女装的奢侈时尚目的地
2019/09/01 全球购物
Electric官网:美国高级眼镜和配件品牌
2020/06/04 全球购物
音乐教学随笔感言
2014/02/19 职场文书
网络技术专业推荐信
2014/02/20 职场文书
员工试用期自我鉴定范文
2014/09/15 职场文书
反四风对照检查材料思想汇报
2014/09/16 职场文书
自主招生学校推荐信范文
2015/03/26 职场文书
简单的辞职信范文(2016最新版)
2015/05/12 职场文书
大学生军训心得体会5篇
2019/08/15 职场文书