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.run‘, [‘uptime‘])

得到jid可以通过get_cache_returns(jid)方法来获取执行结果,在没有执行完成以前是为空的所以可以写一个while来一直读取结果直到读取到或者超出规定时间为止

import salt.client
local = salt.client.LocalClient()
t = 0
jid = local.cmd_async(‘*‘, ‘cmd.run‘, [‘uptime‘])
while not local.get_cache_returns(jid):
    time.sleep(1)
    if t == 8:
        print ‘Connection Failed!‘
        break
    else:
        t+=1
print local.get_cache_returns(jid)

minion端可以用来直接在minions上执行命令或者也可以用来写returnner的时候获取minion的grain信息等

import salt.client
caller = salt.client.Caller()
caller.sminion.functions[‘cmd.run‘](‘ls -l‘)

获取grains的信息

import salt.client
caller = salt.client.Caller()
caller.sminion.functions[‘grains.items‘]  #grains.items代表获取全部的grains信息
caller.sminion.functions[‘grains.item‘](‘os‘) #想要特定的grains信息用grains.item然后在后面指定
时间: 2024-10-08 02:53:15

saltstack通过salt.client执行命令的相关文章

python案例远程执行命令

------类似于cmd的功能,client执行命令,server发命令结果发送到client -----------server.py------------------- import subprocess#subprocess.Popen,主要用Popen这个类实现shell import socketsk=socket.socket()print(sk)address=('127.0.0.1',8003)sk.bind(address)sk.listen(3)print('waiting

Saltstack异步执行命令(十三)

Saltstack异步执行命令 salt执行命令有时候会有超时的问题,就是命令下发下去了,部分主机没有返回信息,这时候就很难判断命令或任务是否执行成功.因此,salt提供异步执行的功能,发出命令后立即返回一个jid.然后我们就可以根据这个jid来查询任务是否执行成功. 命令行实现异步 参数--async,返回job ID,根据job ID我们可以查询执行结果. salt --async '*' test.ping salt-run jobs.lookup_jid 2016111716315335

redis客户端执行命令没反应

问题:redis-cli连接客户端后,执行命令没有反应 解决方法:通过指定一个开启守护进程的配置文件来启动服务,redis-server ../redis.conf 说明:redis.conf是我编辑开启了守护进程的一个配置文件daemonize为yes 原因:./redis-server启动时不填写配置文件地址加载默认的redis的配置,没有开启守护进程 我redis的server和client是在一台虚机上,启动redis服务后我直接ctrl+z了.导致server停止了,所以执行clien

python模块paramiko的上传下载和远程执行命令

#!/usr/bin/python # -*- coding: utf-8 -*- import paramiko,os,datetime server_ip = '192.168.1.123' server_user = 'root' server_passwd = '10241010' server_port = 22 #local_dir='C:\Python27' #remote_dir='/soft2/nba/' def ssh_connect(): ssh = paramiko.SS

一键帮你复制多个文件到多个机器——PowerShell小脚本(内附PS远程执行命令问题解析)

作为一个后台程序猿,经常需要把一堆程序集(DLL)或者应用程序(EXE)复制到多个服务器上,实现程序的代码逻辑更新,用以测试新的功能或改动逻辑.这里给大家介绍一个自己实现的PowerShell脚本,方便大家替换DLL或者EXE到多个Windows机器上. 一.   脚本用途 用于方便复制多个文件到多个服务器上. 二.   脚本功能 脚本的主要功能如下: 支持通过最后修改时间过滤文件,设定时间之前的文件不进行复制操作(逻辑设计源于Rebuild代码后只替换新Build出来的有改动的文件): 支持多

windows服务器远程执行命令(PowerShell+WinRM)

Windows 远程管理 (WinRM) 是 WS-Management 协议的 Microsoft 实现.该协议是基于简单对象访问协议 (SOAP) 的.防火墙友好的标准协议,使来自不同供应商的硬件和操作系统能够互操作.WS-Management 协议由硬件和软件制造商群体开发,作为一种公共标准,可用于与实现该协议的任何计算机设备远程交换管理数据. 使用PowerShell对服务器远程管理,要在远程服务器上启用WinRM. 一.知识储备: 1.WinRM相关操作 开启WinRM服务: Enab

hadoop中执行命令时发生错误

通过一下方式找到错误的原因,开启hadoop的调试信息 [[email protected] bin]# export HADOOP_ROOT_LOGGER=DEBUG,console 这样在执行命令时,可以通过error字样定位执行命令时产生错误的原因 [[email protected] bin]# ./hadoop fs -mkdir test14/10/08 11:17:55 DEBUG util.Shell: setsid exited with exit code 014/10/08

SaltStack实战之远程执行-Targeting

SaltStack实战之远程执行-Targeting 学习 SaltStack SaltStack实战之远程执行-Targeting 1. minion id配置 2. Targeting分类 SaltStack远程执行组成部分: 目标(Targeting) 模块(Module) 返回(Returnners) 1. minion id配置 minion id可以定义在minion配置文件中,如果未定义,默认使用的是hostname.minion id是不能变动的,因为minion与master认

day8-套接字sock 实现SSH远程执行命令功能

复习 #面向对象编程#类:#对象#实例化 :从一个类到产生一个对象的过程    #对象 = 类名()   #__init__初始化方法,是为了给一个具体的对象放一些初识的属性#在类中:    # 静态属性 直接定义在类中的属性,使用静态属性:类名.对象名都可以调用    # 动态属性 就是方法 就是定义在类中的函数 默认传一个self# class Person:#     money = 100# sister = Person()# father = Person()# Person.mon