用python登录远程salt,并执行命令
用python操作saltstack,如果是在本地,则可以用python的salt模块,但如果要操作远程saltstack,则不行,今天就来看看怎么操作。
用python操作远程的saltstack,需要远程saltstack安装并开启salt-api,然后用python登录salt-api获取token,再执行命令,具体代码如下:
#! coding:utf-8 import urllib
import urllib2
from op_site.settings import salt_http_url, salt_user, salt_pwd def get_salt_token(url, user, pwd):
params = {'eauth': 'pam', 'username': user, 'password': pwd}
params_encode = urllib.urlencode(params) # 把上面的参数格式化为字符串,因为下面Request函数需要str类型的参数
url = str(url.rstrip('/')) + '/login' # 构造url
headers = {'Accept': 'application/x-yaml'} # 设置头部信息
req = urllib2.Request(url, params_encode, headers) # params_encode为传入字典参数,params_encode为None 则方法为get,有params_encode为post方法
opener = urllib2.urlopen(req)
resp = (opener.read()).strip()
s_token = (resp.split('\n')[-2]).split(':')[1]
return s_token def exec_salt_cmd(dip, cmd):
params = {'client': 'local', 'tgt': dip, 'fun': cmd}
params = urllib.urlencode(params)
token = get_salt_token('http://192.168.9.1:8080', 'salt', 'salt_pwd') # 这里的账号密码是上篇文章中salt-master配置文件里面配置的
headers = {'X-Auth-Token': token}
req = urllib2.Request(salt_http_url, params, headers)
opener = urllib2.urlopen(req)
resp = opener.read()
return resp
if __name__ == "__main__":
exec_salt_cmd('192.168.9.3', 'df -h')
这就是简单的用python登录远程saltstack并执行命令。
用python登录远程salt,并执行命令的更多相关文章
- Python 实现远程服务器批量执行命令
paramiko 远程控制介绍 Python paramiko是一个相当好用的远程登录模块,采用ssh协议,可以实现linux服务器的ssh远程登录.首先来看一个简单的例子 import parami ...
- linux下远程服务器批量执行命令及SFTP上传文件 -- python实现
之前写过一个python远程执行命令的脚本,但在一个性能测试中,要将程序批量分发到不同服务器,程序无法使用,再将之前的脚本更新,加入批量上传的功能.之前脚本地址:http://www.cnblogs. ...
- Python通过paramiko批量远程主机执行命令
一.前言 在日常运维的过程中,经常需要登录主机去执行一些命令,有时候需要登录一批主机执行相同的命,手动登录执行的化效率太慢, 所以可以通过Python的paramiko模块批量执行,本篇文章基于pyt ...
- saltstack通过salt.client执行命令(转)
利用saltstack的salt.client模块可以在python的命令行下或者python脚本里执行相应的salt命令 master端想要执行类似 salt '*' cmd.run 'uptime ...
- 【shell--批量远程MySQL,执行命令】-【工作总结】
昨天下班前,老板给了一批LOG数据库IP地址,需要统计LOG表里Message字段top 10的结果,并输出到一个excel文件里.抽查看了下,有两种格式的以当天日期结尾的表名.由于数量太多,时间紧迫 ...
- 【转载】在LoadRunner向远程Linux/Unix执行命令行并收集性能数据
前面介绍过在LoadRunner的Java协议实现“使用SSH连接Linux”,当然连接之后的故事由你主导. 今天要讲的,是一个非Java版本.是对“在LoadRunner中执行命令行程序之:pope ...
- python通过getopt模块获取执行命令参数
python脚本和shell脚本一样可以获取命令行的参数,根据不同的参数,执行不同的逻辑处理. 通常我们可以通过getopt模块获得不同的执行命令和参数. 下面我通过新建一个test.py的脚本解释下 ...
- websocket+Django+python+paramiko实现web页面执行命令并实时输出
一.概述 WebSocket WebSocket的工作流程:浏览器通过JavaScript向服务端发出建立WebSocket连接的请求,在WebSocket连接建立成功后,客户端和服务端就可以通过 T ...
- 在LoadRunner向远程Linux/Unix执行命令行并收集性能数据
前面介绍过在LoadRunner的Java协议实现“使用SSH连接Linux”,当然连接之后的故事由你主导. 今天要讲的,是一个非Java版本.是对“在LoadRunner中执行命令行程序之:pope ...
随机推荐
- 20155229 2016-2017-2 《Java程序设计》第八周学习总结
20155229 2016-2017-2 <Java程序设计>第八周学习总结 教材学习内容总结 第十四章 NIO使用频道(Channel)来衔接数据节点,在处理数据时,NIO可以设定缓冲区 ...
- Let the Balloon Rise map一个数组
Contest time again! How excited it is to see balloons floating around. But to tell you a secret, the ...
- C# NPOI导出Excel和EPPlus导出Excel
转自:http://www.cnblogs.com/tanpeng/p/6155749.html 系统中经常会使用导出Excel的功能.之前使用的是NPOI,但是导出数据行数多就报内存溢出. 最近看到 ...
- leetcode:Reverse Words in a String【Python版】
class Solution: # @param s, a string # @return a string def reverseWords(self, s): ss = s.split(&quo ...
- 使用VBS控制声音
Set Ws = CreateObject("Wscript.Shell") Ws.Sendkeys "…" '静音 'Ws.Sendkeys "爱爱 ...
- vue-progressbar 知识点
使用步骤: 安装 import.Vue.use() 组件里,created() 和 mounted() 复制官方github地址上的代码 官方github地址:https://github.com/h ...
- jmeter ---模拟发送TCP/UDP/HTTP/FTP等请求包
JMeter安装UDP插件后支持发送UDP协议的请求包,官方介绍安装插件后可以用来测试DNS, NTP, TFTP, Boot servers and many-many other systems. ...
- IONIC 页面之间传递参数
HomePage 定义goToMyPage方法,传递id和name MyPage接收参数
- Windows下 YOLOv3配置教程(YOLOv3项VS2013平台迁移的方法)
https://blog.csdn.net/maweifei/article/details/81150489
- 两种获取MySql数据库中所有表的主键和外键约束信息的Sql语句
最近在写Rafy底层的一些东西,在数据库方面把MySql数据库集成到里面去,里面有一个需求,需要获取非系统数据库,也就是我们自己建立的数据库中所有表的主键和外键元数据列表. 第一种方法:是网上的方法, ...