salt-api 获取服务器信息,minion批量执行cmd命令
2021-01-25 03:13
标签:type sel html turn 定义 free selinux ast LTP salt-api 获取服务器信息,minion批量执行cmd命令 标签:type sel html turn 定义 free selinux ast LTP 原文地址:https://www.cnblogs.com/lutt/p/12037631.htmlimport requests
import json
try:
import cookielib
except:
import http.cookiejar as cookielib
# 使用urllib2请求https出错,做的设置
import ssl
context = ssl._create_unverified_context()
class SaltAPI(object):
"""
定义salt api接口的类
初始化获得token
"""
def __init__(self,):
self.url = "https://192.168.1.165:8001/"
self.username = "XXX"
self.password = "XXX"
self.headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36",
"Content-type": "application/json"
# "Content-type": "application/x-yaml"
}
self.params = {‘client‘: ‘local‘, ‘fun‘: ‘‘, ‘tgt‘: ‘‘}
self.login_url = self.url + "login"
self.login_params = {‘username‘: self.username, ‘password‘: self.password, ‘eauth‘: ‘pam‘}
self.token = self.get_data(self.login_url, self.login_params)[‘token‘]
self.headers[‘X-Auth-Token‘] = self.token
def get_data(self, url, params):
send_data = json.dumps(params)
request = requests.post(url, data=send_data, headers=self.headers, verify=False)
response = request.json()
result = dict(response)
return result[‘return‘][0]
def remote_execution_module(self, tgt, fun, arg):
"""
远程执行模块,有参数
:param tgt: minion list
:param fun: 模块
:param arg: 参数
:return: dict, {‘minion1‘: ‘ret‘, ‘minion2‘: ‘ret‘}
"""
params = {‘client‘: ‘local‘, ‘tgt‘: tgt, ‘fun‘: fun, ‘arg‘: arg}
return self.get_data(self.url, params)
def salt_command(self, tgt, method, arg=None):
"""远程执行命令,相当于salt ‘client1‘ cmd.run ‘free -m‘"""
if arg:
params = {‘client‘: ‘local‘, ‘fun‘: method, ‘tgt‘: tgt, ‘arg‘: arg}
else:
params = {‘client‘: ‘local‘, ‘fun‘: method, ‘tgt‘: tgt}
# print(‘命令参数: ‘, params)
result = self.get_data(self.url, params)
return result
# 获取信息
@task
def push_host_by_salt_tasks():
salt = SaltAPI()
minions_list = [
‘cpu_model‘,
‘fqdn_ip4‘,
‘os‘,
‘disks‘,
‘gpus‘,
‘id‘,
‘ipv4‘,
‘kernel‘,
‘localhost‘,
‘machine_id‘,
‘master‘,
‘num_cpus‘,
‘saltpath‘,
‘selinux‘,
‘server_id‘,
‘virtual‘,
‘machine_id‘,
‘path‘,
‘swap_total‘,
‘systemd‘,
‘username‘,
‘kernelrelease‘,
]
ret = salt.remote_execution_module(‘*‘, ‘grains.item‘, minions_list)
return Server_Asset_Record.Excu.insert(ret)
salt ‘*‘ grains.items # 获取服务器参数
文章标题:salt-api 获取服务器信息,minion批量执行cmd命令
文章链接:http://soscw.com/index.php/essay/46607.html