2019独角兽企业重金招聘Python工程师标准>>>

Fabric 是什么?¶

如 README 所说:

Fabric 是一个 Python (2.5-2.7) 的库和命令行工具,用来提高基于 SSH 的应用部署和系统管理效率。

更具体地说,Fabric 是:

  • 一个让你通过 命令行 执行 无参数 Python 函数 的工具;

  • 一个让通过 SSH 执行 Shell 命令更加 容易 、 更符合 Python 风格 的命令库(建立于一个更低层次的库)。

下面我们就来看看它是怎么用的:

首先是安装,我们用yum来install一下就好了:

yum install fabric

安装完之后来直接在命令行里敲下面的语句,看看奏不奏效(如果成功则会打印出版本号):

python -c "from fabric.api import * ; print env.version"

奏效后我们直接来编写一个小程序来试试水:

vim fabric_test.py

编辑的内容如下:

#coding:utf-8
from fabric.api import *env.user = 'username'
env.password = 'yourPassword'
hosts = ['ip1:port1','ip2:port2']#设置服务器登录参数
env.roledefs={#操作一致放一组,一组执行同一个操作'server1':hosts,'server2':['ip3:port3']
}#本机操作
def localtask():local('echo "this is a local task"')#server1组操作
@roles('server1')
def task1():run('whoami')#server2组操作
@roles('server2')
def task2():run('df -h')def doworks():execute(localtask)execute(task1)execute(task2)

注意要将username,yourPassword,ip和port修改成你对应的要登录的系统的账号,密码(最好是在指定的部署服务器上用证书配置无密码的ssh连接,这样就不用密码了,而且密码直接写在代码里也不安全,这里只是测试,所以才这样写而已),ip和端口号

附1.Fabfile之env对象

env对象的作用是定义fabfile的全局设定,下面对各属性进行说明:

env.hosts   #定义目标主机,可以用IP或主机名表示,以python的列表形式定义。如env.hosts=['192.168.1.21','192.168.1.22']
env.exclude_hosts   #排除指定主机,如env.exclude_hosts=['192.168.1.21']
env.user   #定义用户名,如env.user='root'
env.port   #定义端口,默认为22,如env.port='22'
env.password   #定义密码,如env.password='123456'
env.passwords  #定义多个密码,不同主机对应不同密码,如:env.passwords = {'root@192.168.1.21:22':'123456','root@192.168.1.22:22':'654321'}
env.gateway   #定义网关(中转、堡垒机)IP,如env.gateway='192.168.1.23
env.roledefs   #定义角色分组,比如web组合db组主机区分开来:env.roledefs = {'webserver':['192.168.1.21','192.168.1.22'],'dbserver':['192.168.1.25','192.168.1.26']}env.deploy_release_dir   #自定义全局变量,格式:env. + '变量名称',如env.age,env.sex等

附2.Fabric常用API

前面的简单实例中使用了api函数run,下面再列举几个常用的api。

local    #执行本地命令,如local('uname -s')
lcd      #切换本地目录,如lcd('/home')
cd       #切换远程目录
run     #执行远程命令
sudo   #sudo方式执行远程命令,如sudo('/etc/init.d/httpd start')
put     #上次本地文件导远程主机,如put('/home/user.info','/data/user.info')
get     #从远程主机下载文件到本地,如:get('/data/user.info','/home/user.info')
prompt  #获得用户输入信息,如:prompt('please input user password:')
confirm  #获得提示信息确认,如:confirm('Test failed,Continue[Y/N]?')
reboot   #重启远程主机,如:reboot()@task   #函数修饰符,标识的函数为fab可调用的,非标记对fab不可见,纯业务逻辑
@runs_once   #函数修饰符,标识的函数只会执行一次,不受多台主机影响

写完后,直接运行一下:

fab -f fabric_test.py doworks

结果(大概的样子):

[localhost] local: echo "this is a local task"
this is a local task
...Done.
Disconnecting from *****@********... done.

至此,fabric的试用就结束了,想深入学习的话,可以查看fabric的中文文档:

http://www.phperz.com/article/15/1005/161116.html

当然,你也可以看官方的文档:

http://www.fabfile.org/

转载于:https://my.oschina.net/lonelycode/blog/839009

fabric安装及试用相关推荐

  1. Proovread安装与试用

    proovread安装与试用 2018.12.04 19:52:21字数 204阅读 118 [TOC] 安装环境 Ubuntu18.10 Perl 5.10.1 or later Log::Log4 ...

  2. MAC OS X Yosemite安装与试用

    MAC OS X Yosemite安装与试用 北京时间2014年6月3日凌晨,苹果公司在美国旧金山Moscone中心召开2014年度全球开发者大会(WWDC 2014),发布了新一代Mac操作系统OS ...

  3. VS2005-此计算机上已安装了试用版。必须先卸载以前安装的试用版后才能安装另一个试用版

    VS2005-此计算机上已安装了试用版.必须先卸载以前安装的试用版后才能安装另一个试用版 以前安装过vs 2005后来安了2008,2005删了,现在项目需要2005,再准备安上,安的时候提示&quo ...

  4. VS2005-此计算机下已安装了试用版,必须先卸载以前安装的试用版后才能安装另一个试用版

    VS2005-此计算机下已安装了试用版,必须先卸载以前安装的试用版后才能安装另一个试用版 VS2005-此计算机上已安装了试用版,必须先卸载以前安装的试用版后才能安装另一个试用版. VS2005-此计 ...

  5. medini analyze软件下载安装使用试用购买

    ##商业软件如需下载安装使用试用,可以点下面,通过简介添加 静态测试软件(QAC.Klocwork.Coverity等)单元测试软件 集成测试软件(VectorCAST.TestBED.Tessy.C ...

  6. libreoffice安装教程_Plasma 5.15.4+Ubuntu19.04 Kubuntu 19.04虚拟机安装和试用

    4月19日更新: 国内中科大镜像网站已经上传好了ubuntu 19.04和各大风味版本正式版的ISO镜像,下载地址这里给出: Ubuntu19.04:http://mirrors.ustc.edu.c ...

  7. HBuilder的安装与试用

      准备把前端框架Layui仔细学习一遍(虽然Layui已经过了最流行的时候,但是很多项目都在用它),在B站找了一套<Layui框架精讲全套视频教程>,视频作者实操Layui时用的工具很方 ...

  8. mysql fabric搭建_MySQL Fabric 安装部署

    MySQL Fabric 是一个用于管理 MySQL 服务器群的可扩展框架.该框架实现了两个特性 - 高可用性 (HA) 以及使用数据分片的横向扩展.这两个特性既可以单独使用,也可以结合使用. 环境: ...

  9. 网络协议逆向工具Netzob1.0.2的安装与试用

    最近项目任务有需求,想探究一下对未知未加密网络协议的解析. 之前只了解过基本的计算机网络知识,对于具体的网络协议,更多是学术上的认识,而没有工程上的认知与实践.因此对于网络协议解析的工作,可谓是一筹莫 ...

  10. GreenHills Software编译器下载安装使用试用

    ##商业软件如需下载安装使用试用,可以点下面,通过简介添加 静态测试软件(QAC.Klocwork.Coverity等)单元测试软件 集成测试软件(VectorCAST.TestBED.Tessy.C ...

最新文章

  1. php slaveok_ZipArchive::open
  2. jdbc驱动_JDBC概述和CRUD
  3. STC89C52单片机 定时器
  4. 连接sql server数据库的两种方式
  5. java连接linux服务器执行shell命令(框架分析+推荐)
  6. java面向对象各章节教程_第二部分java面向对象编程第08章集合框架List1章节.ppt...
  7. c 读取mysql 并显示_c/c++ mysql读取操作实现简单操控电脑
  8. android休眠 wifi 断流,WiFi断流算什么!安卓8.0曝出重大bug,严重多了
  9. 使用python turtle库绘制一个三角形和一个五角星_使用turtle库绘制一个五角星 如何采用Python语言绘制一个五角星...
  10. 流水线机制、滑动窗口协议、GBN、SR
  11. 如何在Windows上使用GIT下载Android源代码
  12. 程序设计语言基础知识复习
  13. oracle语句查询时间范围,oracle时间范围查询
  14. Ps和Sai文件自动保存,自动备份
  15. 《量子信息与量子计算简明教程》第一章·基本概念(上)
  16. 中国最美的100首古代情诗
  17. python3 解决除法中循环小数计算并判断循环体
  18. OpenTSDB搭建过程(CDH环境,kerberos认证)
  19. Google Interview University - 坚持完成这套学习手册,你就可以去 Google 面试了
  20. OAuth2 logout

热门文章

  1. Atitit gui控件定位解决方案
  2. paip.提升安全---网站登录密码明文传输的登录高危漏洞解决方案
  3. Julia: PostgreSQL数据库.......
  4. 阿里集团公布2022“研究型实习生”计划
  5. 这本书,值2000亿!
  6. 【手写数字识别】基于matlab GUI BP神经网络手写数字识别系统【含Matlab源码 1639期】
  7. 【图像提取】基于matlab PCA-CSIFT feature图像特征提取【含Matlab源码 1174期】
  8. 【优化算法】海鸥优化算法(SOA)【含Matlab源码 1099期】
  9. 【图像处理】基于matlab GUI自动报靶系统【含Matlab源码 814期】
  10. 【路径规划】基于matlab GUI A_star算法最短路径规划【含Matlab源码 633期】