相关疑难解决方法(0)

在远程shell中使用Fabric进行run()调用时,是否可以捕获错误代码?

通常,只要run()调用返回非零退出代码,Fabric就会退出.但是,对于某些电话,这是预期的.例如,PNGOut在无法压缩文件时返回错误代码2.

目前我只能通过使用shell逻辑(do_something_that_fails || truedo_something_that_fails || do_something_else)来绕过这个限制,但我宁愿能够将我的逻辑保存在普通的Python中(就像Fabric承诺一样).

有没有办法检查错误代码并对其做出反应而不是让Fabric出现恐慌并死掉?我仍然想要其他调用的默认行为,因此通过修改环境来改变它的行为似乎不是一个好的选择(据我所知,你只能使用它来告诉它警告而不是死亡).

python error-handling fabric

64
推荐指数
2
解决办法
4万
查看次数

如何使Fabric忽略env.hosts列表中的脱机主机?

这与我之前的问题有关,但与之不同.

我有以下fabfile:

from fabric.api import *

host1 = '192.168.200.181'
offline_host2 = '192.168.200.199'
host3 = '192.168.200.183'

env.hosts = [host1, offline_host2, host3]
env.warn_only = True

def df_h():
    with settings(warn_only=True):
        run("df -h | grep sda3")
Run Code Online (Sandbox Code Playgroud)

输出是:

[192.168.200.199] run: df -h | grep sda3

Fatal error: Low level socket error connecting to host 192.168.200.199: No route to host

Aborting.
Run Code Online (Sandbox Code Playgroud)

执行到达脱机服务器后,无论env.hosts列表中的其他服务器如何,它都会立即中止.

我使用了env设置"warn_only = True",但也许我使用它不正确.

如何修改此行为以便它只打印错误并继续执行?

python fabric

11
推荐指数
2
解决办法
8788
查看次数

标签 统计

fabric ×2

python ×2

error-handling ×1