salt 执行命令等待_saltstack异步执行命令
Saltstack異步執行命令
salt執行命令有時候會有超時的問題,就是命令下發下去了,部分主機沒有返回信息,這時候就很難判斷命令或任務是否執行成功。因此,salt提供異步執行的功能,發出命令后立即返回一個jid。然后我們就可以根據這個jid來查詢任務是否執行成功。
命令行實現異步
參數--async,返回job ID,根據job ID我們可以查詢執行結果。
salt?--async?'*'?test.ping
salt-run?jobs.lookup_jid?20161117163153353501
-v參數在返回結果的同時,一同返回本次任務的jid,如果超時還是會返回jid
salt?-v?'*'?test.ping
API實現異步
任務執行代碼樣例,通過async方法執行異步命令獲取返回job id,通過job方法查看執行結果。
import?requests
import?json
def?async(fun,?tgt):
"""
異步任務,獲取jid
"""
params?=?{'client':?'local_async',?'fun':?fun,?'tgt':?tgt}
headers?=?{'X-Auth-Token':?登陸時獲取的token}
try:
ret?=?requests.post(https://ip:port/,?data=params,?headers=headers,?verify=False)
ret?=?json.loads(ret.text)
return?ret['return'][0]['jid']
except?Exception?as?err:
print?err
def?jobs_all(jid=None):
"""
job_id=None,?查看salt?cache中所有的job任務的執行結果
job_id傳值時,查看指定job?id的執行結果
"""
headers?=?{'X-Auth-Token':?登陸時獲取的token}
try:
if?jid?is?None:
ret?=?requests.get(https://ip:port/jobs,?headers=headers,?verify=False)
else:
ret?=?requests.get('https://ip:port/jobs'?+?jid,?headers=headers,?verify=False)
ret?=?json.loads(ret.text)
return?ret
except?Exception?as?err:
logger.error(err)
jid?=?async('test.ping',?'*')
jobs_all()
jobs_all(jid=jid)
本文出自https://www.cnblogs.com/shhnwangjian/p/6074445.html
總結
以上是生活随笔為你收集整理的salt 执行命令等待_saltstack异步执行命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 水滴石穿C语言之声明的语法
- 下一篇: 通用ShellCode深入剖析