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去掉,結果如下:
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM