def salttest(): ''' @note: 运行salt命令 ''' api_info = ApiMg.query.filter_by(app_name='testfdsa').first() client = SaltApi('saltstack') cmd_params = { 'client': 'local', 'fun': 'cmd.run', 'tgt': '*', 'arg': 'date && hostname' } result_data = dict( dict(json.loads(client.saltCmd(cmd_params)))['return'][0]).values()[0] json_data = client.all_key() print "未认证的key: ", json_data['minions_denied'] print "已认证key: ", json_data['minions'] print "已拒绝key: ", json_data['minions_rejected'] print "未认证key: ", json_data['minions_pre'] host_info = client.get_minions('salt-api') print host_info #result_key = dict(dict(json.loads(client.all_key()))) #print result_data return render_template('saltkey_list.html', data=json_data['minions'])
def salt_minion_test(): """saltstack minion connection test""" if request.method == 'POST': key_name = json.loads(request.form.get('data'))['key_name'] client = SaltApi() testping = json.loads( client.saltCmd(params={ 'client': 'local', 'fun': 'test.ping', 'tgt': key_name }))['return'][0].values() if testping[0]: return jsonify({ "result": True, "message": " Minion【%s】连接正常" % key_name }) return jsonify({"result": False, "message": "Minion连接异常"})
def run_saltcmd(): """ 命令执行(单个主机) """ if request.method == "POST": cmd = json.loads(request.form.get('data'))['cmd'] hostname = json.loads(request.form.get('data'))['hostname'] t = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) # 读取命令黑名单 with open( os.path.split(os.path.realpath(__file__))[0] + "/" + "block_cmd.txt", 'r') as f: for each_cmd in f.readlines(): if cmd in each_cmd: return jsonify({ "result": False, "message": u'禁止在此平台运行该命令' }) try: client = SaltApi() run_cmd = json.loads( client.saltCmd( params={ 'client': 'local', 'fun': 'cmd.run', 'tgt': '%s' % hostname, 'arg': '%s' % cmd }))['return'][0].values() print run_cmd run_cmd_log = RuncmdLog(runcmd_target=hostname, runcmd_cmd=cmd, runcmd_user=current_user.name, runcmd_result=run_cmd) db.session.add(run_cmd_log) db.session.commit() return jsonify({ "result": True, "data": run_cmd, "run_time": t, "message": u'执行成功' }) except Exception, e: return jsonify({ "result": False, "message": u'执行失败,请检查API连接是否正常' })
def saltkeylist(): """运行salt命令""" if request.method == "POST": if not ApiMg.query.filter_by(app_name='saltstackapi').first(): return jsonify({"result": False, "message": u'请确保API信息已录入!'}) try: client = SaltApi() data = client.all_key() print "未认证的key: ", data['minions_denied'] print "已认证key: ", data['minions'] print "已拒绝key: ", data['minions_rejected'] print "未认证key: ", data['minions_pre'] print data return render_template('saltstack/saltkey_list.html', data=data['minions']) except Exception, e: print e flash("未能正常连接saltapi,请检查api配置", 'danger') return render_template('saltstack/saltkey_list.html', data='')
def salttest(): ''' @note: 运行salt命令 ''' api_info = ApiMg.query.filter_by(app_name='testfdsa').first() client = SaltApi('saltstack') cmd_params={'client': 'local', 'fun': 'cmd.run', 'tgt': '*', 'arg': 'date && hostname'} result_data = dict(dict(json.loads(client.saltCmd(cmd_params)))['return'][0]).values()[0] json_data=client.all_key() print "未认证的key: " , json_data['minions_denied'] print "已认证key: " , json_data['minions'] print "已拒绝key: " , json_data['minions_rejected'] print "未认证key: " , json_data['minions_pre'] host_info = client.get_minions('salt-api') print host_info #result_key = dict(dict(json.loads(client.all_key()))) #print result_data return render_template('saltkey_list.html',data=json_data['minions'])
def run_salt_cmd(): """批量命令执行(单个/多个主机)""" if request.method == "POST": t = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) cmd = json.loads(request.form.get('data'))['command_arr'] hostname = json.loads(request.form.get('data'))['host_arr'].split(',') host_list = [] [ host_list.append(each_host) for each_host in json.loads( request.form.get('data'))['host_arr'].split(',') ] try: client = SaltApi() run_cmd = client.saltCmd( params={ 'client': 'local', 'fun': 'cmd.run', 'tgt': hostname, 'expr_form': 'list', 'arg': cmd }) if run_cmd is None: return jsonify({ "result": False, "data": run_cmd, "run_time": t, "message": u'执行失败,请检查API连接是否正常' }) else: return jsonify({ "result": True, "data": run_cmd, "run_time": t, "message": u'执行成功' }) except Exception, e: return jsonify({"result": False, "message": u'执行失败,请检查API连接是否正常'})
#!/usr/bin/python # from saltapi import SaltApi import re salt_obj = SaltApi() disabled = [ u"t-slq-test-2", u"t-slq-msyql-3", u"t-slq-lb-2", u"t-slq-test-1", u"t-slq-spark-5", u"t-slq-uat-test-1", u"t-slq-detalase-1", u"t-slq-uat-db-1", u"t-slq-oms-1", u"t-slq-jenkins-2", u"t-slq-mysql-2", u"t-slq-cache1", u"t-slq-k8s-21", u"t-slq-gtw-3", u"t-slq-nat-1", u"t-slq-k8s-22", u"t-slq-win2012-1", u"t-slq-node-1" ] keys = salt_obj.list_all_keys()[0] for key in disabled: keys.remove(key) def handle_data(): os_info = { 'client': 'local', 'fun': 'grains.item', 'tgt': '*', 'arg': ('os', 'fqdn', 'host', 'ipv4', 'osfinger', 'mem_total', 'num_cpus', 'osrelease'), 'kwargs': {}, 'expr_form': 'glob',