fabric

Fabric是一个python的库和命令行工具,高效使用ssh部署应用或系统管理任务.

可以运行本地或远程shell命令,上传下载文件,

典型应用就是创建一个python模块,然后通过fab命令行来执行,

.

安装fabric模块:

sudo   pip install fabric


安装了fabric模块之后可以在shell命令行使用下面命令查看fab命令:

fab - -help

fab [-options] <command>[:arg1, arg2=val2,host=foo,hosts=’h1;h2’, …] …

-f fabfile #如果python程序不是fabfile命名需要指定。

-H hostname #指定远程主机列表

-p password #指定远程机器密码

-R roles #指定角色

##########################################

怎样写一个fabric命令:

def command (args):


如果文件名为fabfile.py执行方法:

fab command


如果文件名为其它执行方法为:

fab -f filename.py command


##########################################

怎样给command传参数:

def command(arg):


fab command:arg=val

fab command:val


##########################################

Fabric有下面模块:

Auth

Contrib

Decorators

Docs

Exceptions

Io

Job_queue

Main

Network

Operations

Sftp

State

Task_utils

Thread_handling

Utils


##########################################

from fabric.api import *


abort(msg) : 使程序异常退出,打印msgstderr,返回1

execute(task,*args, **kwargs):执行task

fastprint(text,show_prefix=False, end=’’, flush=True):立即打印text

get(*args,**kwargs):从远程机器下载文件。

get(source-file,destination) : 下载文件

local(command,capture=False, shell=None):在本地机器运行一个命令。

open_shell(*args,**kwargs):在远程机器调用一个完整的交互shell

path(path,behavior=’append’):将path加到PATH里。

prefix(command):在run/sudo包裹的命令和command之间加上&&

prompt(text,key=None, default='', validate=None):提示text

put(*args,**kwargs):上传一个或多个文件到远程机器。

put(source,destination) : 上传文件或文件夹

puts(text,show_prefix=None, end='\n', flush=False)

reboot(*args,**kwargs):重启远程机器。

remote_tunnel(*args,**kwds):创建一个本地端口到远程机器。

require(*keys,**kwargs):检查键在环境变量的字典中是否存在。

run(*args,**kwargs):在远程机器运行命令。

shell_env(**kw):设置shell环境变量。

sudo(*args,**kwargs):用超级用户权限在远程机器运行一个命令。

warn(msg):输出警告信息。


+++++++++++++++++++

lambda匿名函数:


quiet()

warn_only()

+++++++++++++++++++

with上下文管理器:


cd(path): 远程机器切换到path路径。

lcd(path):本地机器切换到path路径.

hide(*args,**kwds):

settings(*args,**kwargs):设置环境变量并且覆盖env的。

show(*args,**kwds)


+++++++++++++++++++

@装饰器:


runs_once(func):防止包裹函数跑多次。


serial(func):让包裹函数非并行的连续运行。


hosts(*host_list)host_list中的server执行装饰器函数:

@hosts(‘user1@host1’,‘host2’, ‘user3@host3’)

def my_func():

pass

user1@host1host2user3@host3都回运行my_func函数。


parallel(pool_size=None)

@parallel

def my_func():

pass


roles(*rols_list): 分组,同一个角色都执行下面的函数。


task(*args,**kwargs):申明包裹函数是新风格的任务。


with_settings(*arg_settings,**kw_settings)


+++++++++++++++++++

env属性字典。


clear','copy', 'first', 'fromkeys', 'get', 'has_key', 'items', 'iteritems','iterkeys', 'itervalues', 'keys', 'pop', 'popitem', 'setdefault','update', 'values', 'viewitems', 'viewkeys', 'viewvalues


env.host_string= user@ip

env.port= 22

env.password= 'password'

env.roles

env.hosts= ['user1@ip1:port1', 'user2@ip2:port2']

env.password= {'host1':'password1', 'host2':'password2'}

env.exclude_hosts 忽略这个列表中的机器

env.roledefs = {

'rolename1':['host1','host2'],

'rolename2':['host3','host4']

} 使用字典定义角色名字对应的主机ip


+++++++++++++++++++

output


aliases,'clear', 'copy', 'expand_aliases', 'first', 'fromkeys', 'get','has_key', 'items', 'iteritems', 'iterkeys', 'itervalues', 'keys','pop', 'popitem', 'setdefault', 'update', 'values', 'viewitems','viewkeys', 'viewvalues


##########################################

import fabric.colors import *


text附上颜色,bold=True表示加粗。


blue(text,bold=False)

cyan'(text,bold=False):蓝绿

green(text,bold=False)

magenta(text,bold=False):红紫色

red(text,bold=False)

white(text,bold=False)

yellow(text,bold=False)


##########################################

from fabric.context_manager import *


cd(path): 远程机器切换到path路径。

lcd(path):本地机器切换到path路径.

hide(*args,**kwds):

settings(*args,**kwargs):设置环境变量并且覆盖env的。

show(*args,**kwds)

shell_env(**kw) :

char_buffered(*args**kwds)


path(pathbehavior='append':path添加到PATH环境变量。

behavior还可以是:prepend或者replace


prefix(command):在commandrun/sudo命令之间加&&

quiet():是settings(hide('everything'), warn_only=True)的别名。


remote_tunnel(*args**kwds):创建一个本地可见的连到远程及其上的端口。

args一般是端口号,还可以有下面四个参数:

remote_port, remote_bind_address, local_port, local_host.


'connections','contextmanager', 'documented_contextmanager', 'env', '', 'isatty','', 'nested', 'output', 'select', '',, '', 'socket', 'state', 'sys','termios', 'tty', 'warn_only', 'win32


##########################################

目前主要粗略研究下,具体参考文档。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值