gpt4 book ai didi

python-3.x - 如何捕获通过 REST API 执行的 Saltstack `cmd.run` 的返回码

转载 作者:行者123 更新时间:2023-12-05 06:53:17 25 4
gpt4 key购买 nike

我正在将基于 salt.client.LocalClient() 的完全集成的 Celery > Salt 耦合替换为基于 REST API 的设置。一切正常,除了......

我需要以编程方式确定通过 Salt REST API 调用的 cmd.run 失败。

工作的 CLI 示例

命令返回ok:

$ salt srv101 cmd.run "ls /root/"
srv101:
snap

$ echo $?
0

命令返回错误:

$ salt srv101 cmd.run "ls /NOroot/"
srv101:
ls: cannot access '/NOroot/': No such file or directory
ERROR: Minions returned with non-zero exit code

$ echo $?
1

REST 示例(输出或重新编码)

返回ok的调用:

$ curl -L -sSi localhost:7000/run -H "Accept: application/x-yaml" -d username='root' -d password='SORRY;)' -d eauth=pam -d client='local' -d tgt='srv101' -d fun='cmd.run' -d arg='ls /root/'
HTTP/1.1 200 OK
Server: TornadoServer/4.5.3
Content-Type: application/x-yaml
Date: Wed, 20 Jan 2021 21:24:31 GMT
Content-Length: 33

return:
- {srv101: snap}

返回错误输出但没有错误代码的调用:

$ curl -L -sSi localhost:7000/run -H "Accept: application/x-yaml" -d username='root' -d password='SORRY;)' -d eauth=pam -d client='local' -d tgt='srv101' -d fun='cmd.run' -d arg='ls /NOroot/'
HTTP/1.1 200 OK
Server: TornadoServer/4.5.3
Content-Type: application/x-yaml
Date: Wed, 20 Jan 2021 21:24:43 GMT
Content-Length: 88

return:
- {srv101: 'ls: cannot access ''/NOroot/'': No such file or directory'}

我可以看到错误的输出,因此是正确的。但是如何在不解析输出的所有变化或第二次运行 cmd.retcode 的情况下检测到这一点(第二次执行时情况可能会发生变化)。

谢谢! :)

最佳答案

想象你有以下状态:

test_run:
cmd.run
- name: "ls /root/"

您可以通过以下方式查看上述状态的返回码状态。

{% if salt['cmd.run']('echo $? = 0') %}
--- code ---
--- code ---

{% endif %}

希望对您有所帮助。

干杯。

关于python-3.x - 如何捕获通过 REST API 执行的 Saltstack `cmd.run` 的返回码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65818125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com