Skip to main content
 首页 » 编程设计

python之使用 Salt 的 LocalClient,如何获得相同的结果或在 test.ping 命令中指定 '-v' arg

2025年05月04日13Free-Thinker

使用 CLI,我可以输入以下内容:

salt '*' test.ping -v

结果输出如下:

minion_A:
True
minion_B:
True
minion_C:
True
minion_D:
Minion did not return

如何使用 LocalClient 获得相同的结果? 这是我目前正在尝试的,并且只返回响应为 True 的 minions:

self.localClient.cmd('*', 'test.ping', ['-v'])   

更新:
根据指示,命令中可能存在带有 arg 元组的 bug,我还尝试了以下操作:

args = ('-v',) 
return self.localClient.cmd('*', 'test.ping', arg=args) 

...遗憾的是,还是没有成功

请您参考如下方法:

test.ping 函数不接受任何参数,-v 被传递给 salt 命令。请参阅:ping

下面两个命令是一样的:

# salt '*' test.ping -v 
Executing job with jid 20140825123756314894 
------------------------------------------- 
 
palabras: 
    True 
 
# salt '*' -v test.ping 
Executing job with jid 20140825124044472307 
------------------------------------------- 
 
palabras: 
    True 

要获取原始输出的原始版本,请使用以下代码。 (您可以直接调用 SaltCMD 以获得完整的格式化输出,但它会使用自己的 LocalClient。)

来源

from pprint import pprint 
import salt.client 
local = salt.client.LocalClient() 
pprint( local.cmd_full_return( 
    '*', 'test.ping', verbose=True, 
    ) ) 

输出

Executing job with jid 20140825131629740741 
------------------------------------------- 
 
{'palabras': {'ret': True, 'success': True}}