You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让salt-call仅输出错误/警告,屏蔽摘要等其他输出?

问题

执行salt-call state.apply或salt state.apply时,希望仅在出现错误或警告时输出内容,完全屏蔽摘要等所有其他输出。

  • 尝试过--state-verbose、--state-output的组合,无法屏蔽摘要;
  • 使用--out=quiet虽能屏蔽摘要,但会同时移除警告和错误,仅返回状态码;
  • 当前通过临时文件的方式处理,但步骤繁琐,想找更简洁的参数组合实现需求。

当前使用的命令:

salt-call state.apply <my_state> --state_output=mixed --state_verbose=false --out-file=/tmp/state-out-tmp-$$.txt
(($?)) && cat /tmp/state-out-tmp-$$.txt
rm /tmp/state-out-tmp-$$.txt
可行参数组合方案

无需临时文件,可通过以下几种参数组合实现需求:

方案1:基础参数+文本过滤

直接用Salt自带参数配合grep过滤关键内容,命令如下:

salt-call state.apply <my_state> --state-output=terse --state-verbose=false 2>&1 | grep -E "(ERROR|WARNING|Failed)"
  • --state-output=terse:跳过冗余摘要,仅输出状态执行的核心结果;
  • --state-verbose=false:关闭详细执行日志,只保留关键级别的信息;
  • grep部分:精准过滤包含错误、警告关键词的行,只输出需要的内容。

方案2:JSON输出+精准筛选

如果需要更严格的内容控制,可结合--out=json和jq工具提取目标条目:

salt-call state.apply <my_state> --state-output=terse --state-verbose=false --out=json | jq '.[] | select(.result == false or .comment | test("WARNING"))'
  • --out=json:让Salt以JSON格式输出结果,方便结构化处理;
  • jq部分:筛选出执行结果失败(result == false)或注释含警告的条目,仅输出这类内容。

方案3:quiet输出+错误流重定向

利用Salt的错误/警告信息默认输出到标准错误流的特性,配合--out=quiet屏蔽标准输出:

salt-call state.apply <my_state> --out=quiet 2>&1
  • --out=quiet:完全屏蔽标准输出的摘要内容;
  • 2>&1:将标准错误流(包含错误、警告信息)重定向到标准输出,最终只显示需要的内容。

内容的提问来源于stack exchange,提问作者bchill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 10:53:17