执行查询日志返回
import base64
import time
from blueking.component.shortcuts import get_client_by_user, get_client_by_request
def script_and_log(kwargs):
"""
执行脚本返回脚本内容
:param kwargs:
:return:
"""
result = fast_execute_script(kwargs)
result_ = []
if result['result']:
job_instance_id = result["data"]['job_instance_id']
i = 0
while True:
time.sleep(5)
job_result = get_job_instance_log(kwargs["bk_biz_id"], job_instance_id)
if job_result["result"]:
data = job_result["data"]
if data[0]["is_finished"]:
result_ = data[0]["step_results"][0]['ip_logs']
break
i += 1
if i > 10:
break
if result_:
return {"result": True, 'data': result_}
else:
return {"result": False, "data": result_}
else:
return {"result": False, "data": result_}
def fast_execute_script(kwargs):
'''
执行脚本
:params: bk_biz_id int 业务id
:params: script_content str 脚本内容
:params: script_param str 脚本参数
:params: script_timeout int 脚本超时时间,秒
:params: account str 执行账号
:params: script_type int 脚本类型 1(shell脚本)、2(bat脚本)、3(perl脚本)、4(python脚本)、5(Powershell脚本)
:params: ip_list list 执行IP [ {"bk_cloud_id": 0, "ip": "10.0.0.1"}] bk_cloud_id 云区域ID
:return:
'''
user = "admin"
client = get_client_by_user(user)
kwargs = {
"bk_supplier_account": "0",
"bk_biz_id": kwargs.get('bk_biz_id'),
"script_content": base64.b64encode(kwargs.get('script_content')),
"script_param": base64.b64encode(kwargs.get('script_param', "")),
"script_timeout": kwargs.get('script_timeout', 1000),
"account": kwargs.get('account', "root"),
"is_param_sensitive": 0,
"script_type": kwargs.get('script_type', 1),
"ip_list": kwargs.get('ip_list', [])
}
result = client.job.fast_execute_script(kwargs)
print result
return result
def get_job_instance_log(bk_biz_id, job_instance_id):
"""
获取脚本执行日志
:return:
"""
user = "admin"
client = get_client_by_user(user)
kwargs = {
"bk_biz_id": bk_biz_id,
"job_instance_id": job_instance_id
}
result = client.job.get_job_instance_log(kwargs)
print result
return result
str_script = '''df -h'''
kwargs = {
"bk_biz_id": 3,
"script_content": str_script,
"ip_list": [{
"bk_cloud_id": 0,
"ip": "10.221.165.9"
}
]
}
data = script_and_log(kwargs)