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'))