Python Fabric远程运行命令返回值

2024-05-15 21:07:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用pythonfabric中的run命令远程执行脚本。在

C = fabric.Connection('ip', user='user', connect_kwargs={"password": "password"})
try:
   r = C.run('python3 ~/script.py')
   if r:
        print('{} SUCCESS'.format(C.host))
        break
   else:
        print('{} ERROR'.format(C.host))
        break
except:
    print('{} ERROR'.format(C.host))

我的脚本.py是:

^{pr2}$

当我执行一个run命令时,有没有办法查看函数中返回的值是1还是0?在

谢谢你!在


Tags: runpy命令脚本formathost远程error
2条回答

根据fabric2.x文档,默认情况下,结果是在result的stdout和{}属性下捕获并提供的:http://docs.fabfile.org/en/2.0/getting-started.html#run-commands-via-connections-and-run

r = C.run('python3 ~/script.py')
print(r.stdout)

run命令返回一个^{}对象,该对象具有以下属性(除其他外):

  • 标准输出
  • 标准误差
  • exited—程序的退出代码
  • 正常-退出==0
  • return_code-已退出的别名

所以您需要检查exited/return_code属性。在

但是,脚本不会随函数的返回代码一起退出。为此,您需要使用该值sys.exit,因此将下载文件更改为:

sys.exit(download_file(url))

会从download_file函数获取返回代码。您需要在脚本上import sys,以确保您有sys模块可用。在

当程序以非零退出代码失败时,将抛出UnexpectedExit异常。为了在这种情况下获得退出代码,您可以(a)捕获异常,或者(b)将参数warn=True传递给run命令,因此run命令如下所示:

^{pr2}$

相关问题 更多 >