2012-09-25 37 views
3

我有一個bash命令,吐出非標準的返回碼來表示不同類型的成功和失敗。如何在結構中指定有效的非零返回碼?

我想作爲服裝面料文件的一部分運行此命令,而白名單的所有有效返回代碼。

from fabric.api import local 
local('exit 5') # This will cause an abort even though it is expected behaviour 

我的願望是做這樣的事情:

from fabric.api import local, settings 
with settigns(valid_exit_codes=[0,5]): 
    local('exit 5') 

我目前做的線沿線的東西:

with settings(warn_only=True): 
    output = local('exit 5') 

    if output.return_code in [0, 5]: 
     return output.return_code 
    else: 
     abort("Non success return-code: %s" % output.return_code) 

在尋找一個簡單的解決方法的任何幫助將是巨大的。

+0

看起來像'木偶代理--test' [返回非零碼設計](http://projects.puppetlabs.com/issues/5490)(我試圖通過Fabric運行的東西),去圖! – quickshiftin

回答

1

你可以添加追加; echo $?到你的命令,只是返回退出代碼作爲字符串文字。

assert local('(exit 5); echo $?').split()[-1] in "0 1 2 3 4 5" 

當warn_only有效時,這有利於不輸出警告。

相關問題