内容纲要
概要描述
本文介绍如何通过脚本和实现后台 kill 4040页面上,某用户的所有 running 的任务。
详细说明
思路描述
由于Inceptor没有相关后台命令,所以只能通过模拟页面请求来实现。主要技术难点为模拟登录4040页面、获取任务的Job ID。
适用环境
TDH版本
任意TDH版本。
Python版本
Python 2.7。
示例代码
#!/usr/bin python
inceptor_server_host = "172.22.22.1"
guardian_token = "Bf1h3BzC6GimC8cK9Cxv-TDH"
username = "tableau"
password = "tableau"
import urllib
import urllib2
import json
import cookielib
def get_jobs(ip, token):
url = r'http://%s:4040/api/jobs?guardian_access_token=%s' % (ip, token)
request = urllib2.Request(url)
response = urllib2.urlopen(request)
#print response.read()
content = json.loads(response.read())
jobs = []
for t in content:
if t["status"] == "running":
jobs.append(t)
print 'Get %s running jobs.' % len(jobs)
return jobs
def kill_job(jobId, ip, token, username, password):
print '\nKILL JOB ID=%s ...' % jobId
url = r'http://%s:4040/jobs' % ip
cookie = cookielib.CookieJar()
handler = urllib2.HTTPCookieProcessor(cookie)
opener = urllib2.build_opener(handler)
response = opener.open(url)
#print response.read()
text = response.read()
#print text
execution = text.split('
脚本配置
示例代码的前面几行为配置项,根据实际情况进行配置。
inceptor_server_host = "172.22.22.1"
guardian_token = "Bf1h3BzC6GimC8cK9Cxv-TDH"
username = "tableau"
password = "tableau"
inceptor_server_host
配置为Inceptor Server的IP地址。
guardian_token
配置为用户的Guardian Access Token。
username
配置为用户名称。
password
配置为用户密码。
运行效果
将示例代码保存到文件kill_all_jobs.py
后,使用如下命令执行脚本。
python kill_all_jobs.py
执行效果如下。
脚本会杀死所有该用户下正在运行的Job。
定时调度
编辑文件/etc/crontab
,增加该脚本的定时任务即可实现定时调度,定期kill所有4040页面上在跑的任务。