使用CLI,我可以输入以下内容:
盐' *' test.ping -v
结果输出如下:
minion_A:
真
minion_B:
真
minion_C:
真
minion_D:
Minion没有回来
如何使用LocalClient
获得相同的结果?
这就是我目前正在尝试的内容,只返回响应为True
的仆从:
self.localClient.cmd('*', 'test.ping', ['-v'])
更新:
根据命令中可能存在带有arg
元组的 bug 的指示,我还尝试了以下内容:
args = ('-v',)
return self.localClient.cmd('*', 'test.ping', arg=args)
......遗憾的是,仍然没有成功
答案 0 :(得分:6)
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}}
答案 1 :(得分:2)
文档中未提及参数show_timeout
,可以设置为True
以包含超时的结果,并且每次都不会打印调试信息。使用salt 2015.8.4 (Beryllium)
进行了测试,但在撰写本文时看起来像still defaults到False
。
import salt.client
from pprint import pprint
local = salt.client.LocalClient()
# Use show_timeout=True to make salt return
# results for disconnected minions
pings = local.cmd('*', 'test.ping', show_timeout=True)
pprint(pings)
{'host_one': True,
'host_two': 'Minion did not return. [Not connected]',
'host_three': True}
答案 2 :(得分:0)
我能做的最好的事情就是从localClient
a test.ping
执行。
如果回答是{}
,我假设从盐主人那里得到假回报。
否则,收到True。