欢迎来到李先生的博客

深山的鹿,不知归处;万般皆苦,只可自渡。
扩大
缩小

Fabric的settings用法

http://fabric-chs.readthedocs.io/zh_CN/chs/api/core/context_managers.html?highlight=with%20settings#fabric.context_managers.settings  官网的settings介绍

 
1:settings的两个功能
1):最有效的,它允许使用任何提供的关键字和参数临时的覆盖或更改变量,若有需要的话,将会在with块
关闭之后,恢复回原来的
2):可以使用它的参数做一些设定,比如hide,show之类的
 
实例1:
settings里的clean_revert=True的用法
#encoding=utf8
#!/usr/bin/python

from fabric.context_managers import settings,hide
from fabric.api import run,env

def s():
    print("with块之前的:%s " % env.host_string)
    with settings(paraller=True,host_string='myhost'):
        print("host_string: %s" % env.host_string)
        env.host_string = "otherhost"
        print("host_string: %s" % env.host_string)

    print("退出with块之后:%s " % env.host_string)

def a():
    print("with块之前的:%s " % env.host_string)
    with settings(paraller=True,host_string='myhost',clean_revert=True):
        print("host_string: %s" % env.host_string)
        env.host_string = "otherhost"
        print("host_string: %s" % env.host_string)

    print("退出with块之后:%s " % env.host_string)
 
 
执行结果:
clean_revert不设置的话,为下
 
 
clean_revert设置为true的话,执行结果如下:
 
clean_revert=True的作用是,当退出with块的时候,设置的变量将不会还原回with之前的
 
实例二:
#encoding=utf8
#!/usr/bin/python

from fabric.context_managers import settings,hide
from fabric.api import run,env

def my_task():
    with settings(hide('warnings','running','stdout','stderr'),warn_only=True):
        run('ls /etc/redhat-release')

        if run('ls /etc/lsb-release'):
            return "Ubuntu"
        elif run('ls /etc/redhat-release'):
            return 'redhat'

 

 
执行结果为下:不管是否正确,他都什么信息都不会输出,因为hide('warnings','running','stdout','stderr'),warn_only=True
hide隐藏指定的信息,warn_only=True将错误转换为警告,遇到错误不终止,而是变成警告
 
 
可以一个一个注释的去看结果,若将warn_only=True去掉,结果如下:
 
 
 

posted on 2017-06-02 17:21  Captain_Li  阅读(1299)  评论(0编辑  收藏

导航