Python操作Saltstack
1.代码
# -*- coding:utf-8 -*-
import urllib.request
import urllib.parse
import json class saltAPI(): def __init__(self):
self.url = 'http://192.168.174.128:8000'
self.data = {'username' : 'saltapi',
'password' : 'saltapi',
'eauth' : 'pam'}
self.headers = {'User-Agent':'Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}
self.token = self.get_token()
self.headers['X-Auth-Token'] = self.token #发送post
def post_request(self,prefix='/',postdata=None):
request = urllib.request.Request(self.url+ prefix,postdata,headers=self.headers)
reponse = urllib.request.urlopen(request).read()
content = json.loads(reponse.decode('utf8'))
return content #获取token
def get_token(self):
postdata = urllib.parse.urlencode(self.data).encode('utf8')
content = self.post_request('/login',postdata)
try:
token = content['return'][0]['token']
return token
except KeyError:
raise KeyError #获取grains
def get_grains(self,minion=''):
if minion and minion!='*':
prefix = '/minions/'+minion
else:
prefix = '/minions'
content = self.post_request(prefix)
return content #执行命令->get_jid
def SaltCmd(self,tgt,fun,client='local_async',expr_form='glob',arg=None,**kwargs):
params = {'client':client, 'fun':fun, 'tgt':tgt, 'expr_form':expr_form}
if arg:
a=arg.split(',') #参数按逗号分隔
for i in a:
b=i.split('=') #每个参数再按=号分隔
if len(b)>1:
params[b[0]]='='.join(b[1:]) #带=号的参数作为字典传入
else:
params['arg%s'%(a.index(i)+100)]=i
if kwargs:
params=dict(list(params.items())+list(kwargs.items()))
obj = urllib.parse.urlencode(params).encode('UTF8')
ret = self.post_request(prefix='/',postdata=obj)
jid = ret['return'][0]['jid']
prefix = '/jobs/'+jid
content = self.post_request(prefix)
return content['info'][0]['Result'] def test(self):
print(self.headers) if __name__ == '__main__':
tester = saltAPI()
token = tester.SaltCmd('*','test.ping')
print(token)
Python操作Saltstack的更多相关文章
- python 操作 saltstack Api(二) 示例
获取token #!/usr/bin/env python #-*-coding:utf--*- import urllib import urllib.parse import urllib.req ...
- python操作RabbitMQ(不错)
一.rabbitmq RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列 ...
- Python(九) Python 操作 MySQL 之 pysql 与 SQLAchemy
本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...
- Python 【第六章】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...
- 练习:python 操作Mysql 实现登录验证 用户权限管理
python 操作Mysql 实现登录验证 用户权限管理
- Python操作MySQL
本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...
- Python操作Mysql之基本操作
pymysql python操作mysql依赖pymysql这个模块 下载安装 pip3 install pymysql 操作mysql python操作mysql的时候,是通过”游标”来进行操作的. ...
- Python操作RabbitMQ
RabbitMQ介绍 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现的产品,RabbitMQ是一个消息代理,从“生产者”接收消息并传递消 ...
- python操作日期和时间的方法
不管何时何地,只要我们编程时遇到了跟时间有关的问题,都要想到 datetime 和 time 标准库模块,今天我们就用它内部的方法,详解python操作日期和时间的方法.1.将字符串的时间转换为时间戳 ...
随机推荐
- element-ui button组件 radio组件源码分析整理笔记(一)
Button组件 button.vue <template> <button class="el-button" @click="handleClick ...
- element-ui inputNumber、Card 、Breadcrumb组件源码分析整理笔记(三)
inputNumber组件 <template> <!--@dragstart.prevent禁止input中数字的拖动--> <div @dragstart.preve ...
- Docker在windows7上的安装
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...
- JS函数机制小结
1.javascript中函数是第一型对象,即与其它对象一样,具有: 1.可以通过字面量创建 2.可以赋值给变量或者属性 3.可以作为参数进行传递 4.可以作为函数结果返回 5.拥有属性和方法 2.函 ...
- Oracle 修改SYS、system用户密码
Oracle 修改SYS.system用户密码 by:授客 QQ:1033553122 概念 SYS用户是Oracle中权限最高的用户,而SYSTEM是一个用于数据库管理的用户.在数据库安装完之后,应 ...
- [Android] 实现简单的相机程序
好久没写了,有些东西做过都快忘了,赶紧记一下. 现在来实现一个简单的相机程序. 原文地址http://www.cnblogs.com/rossoneri/p/4246134.html 当然需要的话可以 ...
- 网站与phpwind用户同步的方法
搭建了一个个人网站,希望使用phpwind来完成论坛功能.但很快就发现存在用户同步的问题,我的网站已经有了用户管理功能, phpwind论坛也有.因此用户同步注册,登陆和注销是必须要实现的. 网上说可 ...
- C#中virtual(虚方法)的理解以及和abstract(抽象方法)的区别
Virtual方法(虚方法) virtual 关键字用于在基类中修饰方法.virtual的使用会有两种情况: 情况1:在基类中定义了virtual方法,但在派生类中没有重写该虚方法.那么在对派生类实例 ...
- Sr Software Engineer - Big Data Team
Sr Software Engineer - Big Data Team About UberWe’re changing the way people think about transport ...
- VC Debug和Release区别
https://msdn.microsoft.com/en-us/library/xz7ttk5s.aspx Optimizing Your Code Visual Studio 2015 The ...