fabric 安装及使用

Fabric是一个Python库,用于简化使用SSH的应用程序部署或系统管理任务。

它提供的操作包括:执行本地或远程shell命令,上传/下载文件,以及其他辅助功能等。

安装

☞点我传送到fabric官网

安装fabric库

pip install fabric

依赖 Paramiko 、PyCrypto库

安装依赖

# 安装 pycrypto 密码库
pip install pycrypto

# 安装 pycrypto 依赖
pip install ecdsa

ps:【windows7 x64 ,python2.7 】Windows下pip安装包报错:Microsoft Visual C++ 9.0 is required Unable to find vcvarsall.bat ,可以安装Micorsoft Visual C++ Compiler for Python 2.7

fabric使用

新建py脚本:fabfile.py

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

执行fab命令:执行hello函数

fab hello

如果当前模块下没有fabfile.py文件,那么需要指定-f参数.

fab -f test.py hello

使用参数

def hello(name, value):
    print("%s = %s!" % (name, value))

带参执行命令

fab hello:name=age,value=20  

执行本地操作

from fabric.api import local, lcd

def lsfab():
  with lcd('~/tmp/fab'):
     local('ls')

执行远程操作

def setting_ci():
    local('echo "add and commit settings in local"')

def update_setting_remote():
     print "remote update"
     with cd('~/temp'):   #cd用于进入某个目录
         run('ls -l | wc -l')  #远程操作用run 

多服务器操作

#!/usr/bin/env python
# encoding: utf-8

from fabric.api import *
env.roledefs = {
            'testserver': ['user1@host1:port1',],
            'productserver': ['user2@host2:port2', ]
            }            

@roles('testserver')
def task1():
    run('ls -l | wc -l')

@roles('productserver')
def task2():
    run('ls ~/temp/ | wc -l')

def do():
    execute(task1)
    execute(task2) 

用不同颜色打印

from fabric.colors import *

def show():
    print green('success')
    print red('fail')
    print yellow('yellow') 

fabric 命令行工具

装饰器作用?
    @task   # 定义任务 @task(alias='dwm') fab --list
    @parallel # 并行处理

    命令行常用: fab --help
    fab -l             -- 显示可用的task(命令)
    fab -H             -- 指定host,支持多host逗号分开
    fab -R             -- 指定role,支持多个
    fab -P             -- 并发数,默认是串行
    fab -w             -- warn_only,默认是碰到异常直接abort退出
    fab -f             -- 指定入口文件,fab默认入口文件是:fabfile/fabfile.py

☞更多参考官网教程

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容