背景:fabric主要执行远程的shell命令,包括文件的上传、下载,以及提示用户输入等辅助其它功能。

测试系统:ubuntu16

要求:python    //系统有自带,ubuntu16 通常自带python2.7.5

一、安装fabric

  1、安装fabric

$ sudo apt-get install python-pip

$ sudo pip install --upgrade pip                            //升级pip

$ sudo pip install fabric

  2、查看安装结果

$ which fab

二、fabric的使用

  1、编写hello脚本: vim /tmp/fab/hello.py

  1.1 脚本内容

#!/usr/bin/env python

def hello():
print("Hello world!")

  1.2 运行文件及输出结果

$ fab -f hello.py hello

----------------------------------------->

Hello world!

Done.

  2、参数传递:vim /tmp/fab/test1.py

  2.1 脚本内容

#!/usr/bin/env python

def hello(name):

        print('Hello %s!' % name)

  2.2 运行文件及输出结果

$ fab -f test01.py hello:jeff

-------------------------------------->
Hello jeff! Done.

  3、本地操作

  3.1 vim /tmp/fab/lslocal.py

#!/usr/bin/env python

from fabric.api import local

def lslocal():
local('cd /usr/local')
local('ls')

  3.2 运行文件及输出结果

$ fab -f local.py lslocal
[localhost] local: cd /usr/local && ls
bin etc games include lib man sbin share src Done.

  4、远程操作

  4.1 脚本内容

#!/usr/bin/env python
# -*- coding: utf-8 -*- from fabric.api import * env.roledef = {
'server1': ['root@172.16.1.201:22',],
'server2': ['zun1@172.16.1.206:22',]
}
env.password = '123456' @roles('server1')
def task1():
run('cd /usr/local && ls') @roles('server2')
def task2():
  with cd('/home/zun1'):          //with的作用在于让后面的表达式语句继承当前的状态
run('ls')               // 以实现 “ls /home/zun1” 的效果 def test():
execute(task1)
execute(task2)

  4.2 运行文件及输出结果

$ fab -f test01.py test

------------------------------------------------------------------------------------>

[root@172.16.1.201:22] Executing task 'task1'
[root@172.16.1.201:22] run: cd /usr/local && ls
[root@172.16.1.201:22] out: bin etc games include lib lib64 libexec sbin share src
[root@172.16.1.201:22] out: [zun1@172.16.1.206:22] Executing task 'task2'
[zun1@172.16.1.206:22] run: cd /home/zun1 && ls
[zun1@172.16.1.206:22] out: test_fabric walle-web.vendor.tgz
[zun1@172.16.1.206:22] out: Done.
Disconnecting from root@172.16.1.201... done.
Disconnecting from 172.16.1.206... done.

以上只对fabric做个大概演示,如想深入研究,可查看 官网教程

  

python fabric的安装与使用的更多相关文章

  1. Python自动化运维工具fabric的安装

    使用shell命令进行复杂的运维时,代码往往变得复杂难懂,而使用python脚本语言来编写运维程序,就相当于开发普通的应用一样,所以维护和扩展都比较简单,更重要的是python运维工具fabric能自 ...

  2. python fabric安装

    1 安装epel wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 2 安装pip yum i ...

  3. Python Fabric远程自动部署简介

    Fabric是一个Python(2.5-2.7)库,用于简化使用SSH的应用程序部署或系统管理任务. 它提供的操作包括:执行本地或远程shell命令,上传/下载文件,以及其他辅助功能,如提示用户输入. ...

  4. Python - Fabric简介

    1 - Fabric Fabric是一个Python的库,提供了丰富的同SSH交互的接口,可以用来在本地或远程机器上自动化.流水化地执行Shell命令. 非常适合用来做应用的远程部署及系统维护.简单易 ...

  5. 轻量级自动化运维工具Fabric的安装与实践

    一.背景环境 在运维工作中,经常会遇到重复性的劳动,这个时候为了效率就必须要使用自动化运维工具. 这里我给大家介绍轻量级自动化运维工具Fabric,Fabric是基于Python语言开发的,是开发同事 ...

  6. 使用python fabric搭建RHEL 7.2大数据基础环境以及部分优化

    1.使用python fabric进行Linux基础配置 使用python,可以让任何事情高效起来,包括运维工作,fabric正式这样一套基于python2的类库,它执行本地或远程shell命令提供了 ...

  7. Python Fabric模块详解

    Python Fabric模块详解 什么是Fabric? 简单介绍一下: ​ Fabric是一个Python的库和命令行工具,用来提高基于SSH的应用部署和系统管理效率. 再具体点介绍一下,Fabri ...

  8. (数据科学学习手札132)Python+Fabric实现远程服务器连接

    本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 日常工作中经常需要通过SSH连接到多台远程 ...

  9. Python 2/3 安装与运行环境设置

    Python 2/3 安装与运行环境设置: 1.Python 软件源:https://www.python.org/    下载Win版本 https://www.python.org/downloa ...

随机推荐

  1. GIT笔记:GITHUB教程【官方自译版】

    GIT笔记:将项目发布到GITHUB GITHUB是什么 GitHub是版本控制和协作的代码托管平台.它可以让你和其他人在任何地方一起工作. 1.创建一个新的仓库 存储库通常用于组织单个项目.存储库可 ...

  2. 阿里云 rails nginx 配置https访问

    1.申请免费型dv ssl证书:https://common-buy.aliyun.com/?spm=a2c4e.11155515.0.0.7zzvOZ&commodityCode=cas#/ ...

  3. Kattis - fairdivision 【贪心】

    题意 有一堆人 要给他们的朋友 买一个生日礼物,然后 每个人 给出自己的最大负担额度 并且给出礼物总价 然后要给出一种解决方案 尽量让 所有人的支出都接近平均,如果实在无法平均,那就让 先来的人 多处 ...

  4. 图形用户界面(GUI)事件监听机制——窗体事件Frame

    窗体事件.Button的使用 本事例给出一个窗体的定义方法,基本属性设置,给窗体添加退出按钮,让按钮具备退出的功能.熟悉监听器的使用 按钮就是事件源. 那么选择哪一个监听器呢? 通过关闭窗体事例了解到 ...

  5. Java多线程系列 JUC线程池06 线程池原理解析(五)

    ScheduledThreadPoolExecutor解析 ScheduledThreadPoolExecutor适用于延时执行,或者周期性执行的任务调度,ScheduledThreadPoolExe ...

  6. EntityFramework 学习 一 Model Browser

    我们已经为School表创建第一个实体数据模型,可视化的EDM设计器不显示所有的实体,而是显示和数据库中对应的表和视图 Model Browser为你提供关于所有对象和函数的信息, Diagrams ...

  7. JSP&EL 内置对象

    JSP&EL 内置对象 转载▼   具体的JSP和El中的内置对象见下表,由于我写在了excel中,也不知道怎么把excel发出来,就截了图. 相关问题: Q1: JSP:EL中 pageCo ...

  8. POJ 2831 Can We Build This One:次小生成树【N^2预处理】

    题目链接:http://poj.org/problem?id=2831 题意: 给你一个图,每条边有边权. 然后有q组询问(i,x),问你如果将第i条边的边权改为x,这条边是否有可能在新的最小生成树中 ...

  9. hdu 2041 超级楼梯(简单dp)

    超级楼梯 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  10. Mysql总结_03_mysql常用命令

    一.MySQL服务的启动和停止 net stop mysql net start mysql 二.登陆mysql mysql -u用户名 -p用户密码 键入命令mysql -uroot -p, 回车后 ...