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://docs.saltstack.com/en/latest/ref/netapi/all/salt.netapi.rest_cherrypy.html#id1

时间: 2024-10-07 16:53:29

Saltstack异步执行命令(十三)的相关文章

m5-多主机异步执行命令程序

这是一个多主机异步执行命令程序 作者介绍: author:Howard My Blog: http://987774031.blog.51cto.com/ GitHub: https://github.com/wuwuming/python_practice/tree/master/machine_manage 需求: 例子: >>:run "df -h" --hosts 192.168.3.55 10.4.3.4 task id: 45334 >>: chec

Python开发【项目】:RPC异步执行命令(RabbitMQ双向通信)

RPC异步执行命令 需求: 利用RibbitMQ进行数据交互 可以对多台服务器进行操作 执行命令后不等待命令的执行结果,而是直接让输入下一条命令,结果出来后自动打印 实现异步操作 本节涉及最多的还是rabbitmq通信原理知识,要求安装rabbitmq服务 程序用广播topic模式做更好 程序目录结构: 程序简介: # 异步rpc程序 ## 1.需求 - [ ] 利用RibbitMQ进行数据交互 - [ ] 可以对多台服务器进行操作 - [ ] 执行命令后不等待命令的执行结果,而是直接让输入下一

Saltstack远程执行命令(3)

Saltstack的一个比较突出的优势是具备执行远程命令的功能,可以帮助运维人员完成集中化的操作平台(批量执行服务器命令) 命令格式:salt '<操作目标>' <方法>[参数] 实例:查看minion主机的内存使用情况 salt 'SN2013-08-021' cmd.run 'free -m' 其中针对<操作目标>,Saltstack提供了多种方法对minion(id)进行过滤. (1)-E, --pcre 通过正则进行匹配. 示例:检测id是SN2013字符开头的

集中化管理平台Saltstack远程执行命令

官网:http://saltstack.com/ 国内:http://www.saltstack.cn/ 命令格式: salt '<操作目标>' <方法> <参数> 1.查看minion001主机使用: [[email protected] ~]# salt 'minion001' cmd.run 'free -m' minion001:                  total       used       free     shared    buffers

Saltstack系列2:Saltstack远程执行命令

命令 命令格式: salt '<操作目标>' <方法>[参数] 例: salt 'wx' cmd.run 'free -m' #查看被控主机内存使用情况 常用参数 针对<操作目标>,Saltstack提供了多种方法对被控主机(id)进行过滤.下面列举出常用具体参数:-E,--pcre,通过睁着表达式进行匹配: salt -E '^SN2013.*' test.ping #探测SN2013开头的主机id名是否连通 -L,--list,以主机id名列表的形式进行过滤,格式与

ADO.NET开发技巧(3)-执行命令初步

非常好,新兵,我们已经成功连接到了数据库,接下来,我们就可以让数据库执行我们的命令了,也就是,可以开始大干一场了.哦,当然,你还得知道如何让数据库执行命令.如果没掌握好技巧而弄巧成拙的话,异常大军会马上赶过来并杀死你的. 一旦SqlConnection类使用了open方法,那么,就代表我们已经连接到了数据库,哦,等等,这是-.异常大军!笨蛋,你连接字符串拼错了!怎么办?别慌,下士,microsoft送给我们的工具箱还没用呢,让我打开看看,哦,这是try-catch-finally.另一个是usi

完整方案:命令模式+异步执行+取消机制

引子 随着项目的发展,activity的代码变得越来越庞杂,不易维护.这便出现了诸如MVP等模式来分层实现以达到给activity减负的效果,从而降低业务逻辑的耦合,提高可维护性.本文从另外一个角度出发,利用命令模式来实现给activity瘦身的目标.采用本文的方案,同样可以将业务逻辑抽离,并于后台执行,同时提供了不错的取消机制. 接口 iCmd接口,主要api是exe方法,返回值是bundle对象:其他mTag,mCanceled用于取消相关 public abstract class iCm

saltstack通过salt.client执行命令

利用saltstack的salt.client模块可以在python的命令行下或者python脚本里执行相应的salt命令 master端想要执行类似 salt '*' cmd.run 'uptime' 在saltclient里可以这么写 import salt.client local = salt.client.LocalClient() local.cmd('*', 'cmd.run', ['uptime']) 也可以放到后台执行只返回一个jid cmd_async('*', 'cmd.r

七十三、分发系统介绍、expect脚本远程登录、expect脚本远程执行命令、expect传递参数

七十三.分发系统介绍.expect脚本远程登录 一.分发系统介绍 expect脚本:能传输文件,可以远程执行命令,不需要输入密码,上线代码. 首先,准备一台模板机器,这台机器上的代码是最新的代码,准备要上线的代码,要知道要线上机器的ip地址,还有对应用户和密码. 二.expect脚本远程登录 #  yum install -y expect 自动远程登录 [[email protected] sbin]# vim 1.expect       路径:/usr/local/sbin/ #! /us