Fabric安装与测试:
pip install fabric
from fabric.api import run

1
2
def host_os():
    run('uname -a')

fatal error: low level socket error connecting to host localhost:connection refused说明没安ssh
fab -H 127.0.0.1 -f ./test.py host_os

** fabric的特点:** 代码可读性强,完全是python语言。
封装了本地、远程操,内置了一些方法。
可以根据需求灵活的定义参数。
角色定义,方便批量管理。

常用的配置参数:
env.host – 主机ip,当然也可以-H参数指定
env.password – 密码,打好通道的请无视
env.roledefs – 角色分组,比如:{‘web’: [‘x’, ‘y’], ‘db’: [‘z’]}
fab -l – 显示可用的task(命令)
fab -H – 指定host,支持多host逗号分开
fab -R – 指定role,支持多个
fab -P – 并发数,默认是串行
fab -w – warn_only,默认是碰到异常直接abort退出
fab -f – 指定入口文件,fab默认入口文件是:fabfile/fabfile.py

常用的函数:
local('pwd') – 执行本地命令
lcd('/tmp') – 切换本地目录
cd('/tmp') – 切换远程目录
run('uname -a') – 执行远程命令,一般会提示叫你输入密码。
sudo('/etc/init.d/nginx start') – 执行远程sudo,注意pty选项

测试:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#encoding=utf-8
#description:fabric代码测试。

from fabric.api import run,local,lcd,env,cd

env.hosts = ['localhost']
env.password = '1'
def localcopyfile():
    local('pwd')
    local('cp /home/laowang/workspace/info.txt /home/laowang/test')
    print 'local copy file success'

def remote():
    run('pwd')
    run('cp /home/laowang/workspace/test.py /home/laowang/test')
    print 'remote copy file success'