#coding=utf-8
import urllib
import urllib2
import json
import ssl
try:
ssl._create_default_https_context = ssl._create_unverified_context
except AttributeError:
pass
class salt_stack(object):
def __init__(self):
self.token=""
##master信息
self.salt_master={
"ip":"192.168.171.130",
"port":'8000',
'username':'saltapi',
'password':'123456',
}
##https接口
self.url_base="https://%s:%s" % (self.salt_master['ip'],self.salt_master["port"])
##先获取token
def conn(self):
url=self.url_base+"/login"
data=urllib.urlencode({
"username":self.salt_master["username"],
"password":self.salt_master["password"],
"eauth":"pam",
})
req=urllib2.Request(url,data)
request=urllib2.urlopen(req)
self.token=json.loads(request.read())["return"][0]["token"]
request.close()
print self.token
##调用
def run(self,hostname,cmd):
url=self.url_base+"/"
##hostname是minion节点名
data=urllib.urlencode({
"client":"local",
"tgt":hostname,
"fun":"cmd.run",
"arg":cmd,
})
##添加token头
headers = {'X-Auth-Token':self.token}
req=urllib2.Request(url,data,headers)
request=urllib2.urlopen(req)
result=json.loads(request.read())["return"][0]
request.close()
if not result:
return "Error:no this server"
else:
return result[result.keys()[0]]
if __name__=="__main__":
ss = salt_stack()
##先获取token
ss.conn()
print ss.run("salt-minion","free -m").encode('utf-8')
python调用SaltStack接口
猜你喜欢
转载自blog.csdn.net/kong2030/article/details/81287059
今日推荐
周排行