netapi

 

requests模块请求netapi代码示例:

import json
import requests
class SaltAPI(object):
    def __init__(self,url):
        self.url = url
        self.auth = None
        self.header = {'Content-Type': 'application/json'}
    def login(self, username=None, password=None,):
        if self.auth is None:
            auth_dic = {
                'username': username,
                'password': password,
                'eauth': 'pam'
            }
            print('auth')
            req = requests.post(self.url+'/login', data=json.dumps(auth_dic), headers=self.header)
            response = req.json()
            self.auth = response['return'][0]['token']
        return self.auth
    def request_salt(self,cmd,method=None):
        request_dict = {
            'client': 'local',
            'tgt': '*',
            'fun': method,
            'arg': cmd
        }
        self.header.update({'X-Auth-Token':self.auth})
        response = requests.post(self.url,data=json.dumps(request_dict),headers=self.header)
        return response.json()
    def __getattr__(self, module):
        return SaltObj(module,self)
class SaltObj():
    def __init__(self,module,parent):
        self.module = module
        self.parent = parent
    def __getattr__(self, func):
        method = '%s.%s' % (self.module, func)
        def fn(*args,**kwargs):
            return self.parent.request_salt(args,method)
        return fn

f = SaltAPI('http://10.240.1.103:8080')
f.login('salt','111')
print(f.grains.item('sys'))

 

posted @ 2017-06-02 13:40  跟随心走  阅读(307)  评论(0编辑  收藏  举报