如何解决如何从通过 REST API 执行的 Saltstack `cmd.run` 中捕获返回代码
我将基于 salt.client.LocalClient()
的完全集成的 Celery > Salt 耦合替换为基于 REST API 的设置。一切正常,除了...
我需要以编程方式确定通过 Salt REST API 调用的 cmd.run 失败。
工作 CLI 示例
命令返回正常:
$ 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 的情况下检测到这一点(第二次执行时情况可能会发生变化)。
谢谢! :)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。