首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在fabric中指定有效的非零返回代码?

如何在fabric中指定有效的非零返回代码?
EN

Stack Overflow用户
提问于 2012-09-25 16:56:41
回答 3查看 1.5K关注 0票数 3

我有一个bash命令,它输出非标准返回代码来指示不同类型的成功和失败。

我希望将此命令作为fabric文件的一部分运行,同时将所有有效的返回代码列入白名单。

代码语言:javascript
复制
from fabric.api import local
local('exit 5') # This will cause an abort even though it is expected behaviour

我的愿望是这样做:

代码语言:javascript
复制
from fabric.api import local, settings
with settigns(valid_exit_codes=[0,5]):
    local('exit 5')

我目前正在做的事情大致如下:

代码语言:javascript
复制
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)

在寻找更简单的解决方法方面的任何帮助都将是很好的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-03 20:15:57

从Fabric 1.6开始,env中有ok_ret_codes设置

http://docs.fabfile.org/en/1.13/usage/env.html#ok-ret-codes

所以你可以这样做:

代码语言:javascript
复制
    with fabric.api.settings(ok_ret_codes=[0, 2]):
        fabric.api.sudo('puppet agent -t')
票数 4
EN

Stack Overflow用户

发布于 2012-09-26 07:36:09

看起来需要一个布料补丁才能得到你想要的东西。这一条应该能帮你找到目标:https://github.com/opie4624/fabric/compare/master...return-codes

票数 1
EN

Stack Overflow用户

发布于 2014-08-12 18:17:16

您可以将append ; echo $?添加到命令中,只需将退出代码作为字符串文字返回即可。

代码语言:javascript
复制
assert local('(exit 5); echo $?').split()[-1] in "0 1 2 3 4 5"

这样做的好处是在warn_only生效时不会输出警告。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12579454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档