zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    paper 66: MATLAB函数—disp的使用
    paper 65 :尺度不变特征变换匹配算法[转载]
    paper 64:尺度空间(Scale space)理论
    paper 63 :函数比较:imfilter与fspecial
    paper 62:高斯混合模型(GMM)参数优化及实现
    paper 61:计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接
    paper 60 :转载关于视觉SCI期刊
    paper 59:招聘
    paper 58 :机器视觉学习笔记(1)——OpenCV配置
    paper 57 :颜色直方图的代码
  • 原文地址:https://www.cnblogs.com/mascot1/p/9964245.html
Copyright © 2011-2022 走看看