def cron_mod(request,cid): try: cron = Cron_Config.objects.select_related().get(id=cid) except: return render_to_response('cron/cron_modf.html',{"user":request.user, "errorInfo":"任务不存在,可能已经被删除."}, context_instance=RequestContext(request)) if request.method == "GET": return render_to_response('cron/cron_modf.html', {"user":request.user,"cron":cron}, context_instance=RequestContext(request)) elif request.method == "POST": try: Cron_Config.objects.filter(id=cid).update( cron_minute=request.POST.get('cron_minute'), cron_hour=request.POST.get('cron_hour'), cron_day=request.POST.get('cron_day'), cron_week=request.POST.get('cron_week'), cron_month=request.POST.get('cron_month'), cron_user=request.POST.get('cron_user'), cron_desc=request.POST.get('cron_desc'), cron_command=request.POST.get('cron_command'), cron_script_path=request.POST.get('cron_script_path',None), cron_status=request.POST.get('cron_status'), ) recordCron.delay(cron_user=str(request.user),cron_id=cid,cron_name=cron.cron_name,cron_content="修改计划任务",cron_server=cron.cron_server.ip) except Exception,e: return render_to_response('cron/cron_modf.html', {"user":request.user,"errorInfo":"更新失败,错误信息:"+str(e)}, context_instance=RequestContext(request)) try: sList = [cron.cron_server.ip] if cron.cron_server.keyfile == 1:resource = [{"hostname": cron.cron_server.ip, "port": int(cron.cron_server.port)}] else:resource = [{"hostname": cron.cron_server.ip, "port": int(cron.cron_server.port), "username": cron.cron_server.username,"password": cron.cron_server.passwd}] cron = Cron_Config.objects.get(id=cid) if request.FILES.get('cron_script'): cron.cron_script=request.FILES.get('cron_script') cron.save() ANS = ANSRunner(resource) if cron.cron_status == 0:ANS.run_model(host_list=sList,module_name="cron",module_args="""name={name} state=absent""".format(name=cron.cron_name)) else: if cron.cron_script: src = os.getcwd() + '/' + str(cron.cron_script) file_args = """src={src} dest={dest} owner={user} group={user} mode=755""".format(src=src,dest=cron.cron_script_path,user=cron.cron_user) ANS.run_model(host_list=sList,module_name="copy",module_args=file_args) cron_args = """name={name} minute='{minute}' hour='{hour}' day='{day}' weekday='{weekday}' month='{month}' user='******' job='{job}'""".format(name=cron.cron_name,minute=cron.cron_minute, hour=cron.cron_hour,day=cron.cron_day, weekday=cron.cron_week,month=cron.cron_month, user=cron.cron_user,job=cron.cron_command ) ANS.run_model(host_list=sList,module_name="cron",module_args=cron_args) except Exception,e: return render_to_response('cron/cron_modf.html',{"user":request.user,"errorInfo":"错误信息:"+str(e)}, context_instance=RequestContext(request))
def cron_mod(request,cid): try: cron = Cron_Config.objects.select_related().get(id=cid) except: return render_to_response('cron/cron_modf.html',{"user":request.user, "errorInfo":"任务不存在,可能已经被删除."}, context_instance=RequestContext(request)) if request.method == "GET": return render_to_response('cron/cron_modf.html', {"user":request.user,"cron":cron}, context_instance=RequestContext(request)) elif request.method == "POST": try: Cron_Config.objects.filter(id=cid).update( cron_minute=request.POST.get('cron_minute'), cron_hour=request.POST.get('cron_hour'), cron_day=request.POST.get('cron_day'), cron_week=request.POST.get('cron_week'), cron_month=request.POST.get('cron_month'), cron_user=request.POST.get('cron_user'), cron_desc=request.POST.get('cron_desc'), cron_command=request.POST.get('cron_command'), cron_script_path=request.POST.get('cron_script_path',None), cron_status=request.POST.get('cron_status'), ) recordCron.delay(cron_user=str(request.user),cron_id=cid,cron_name=cron.cron_name,cron_content="修改计划任务",cron_server=cron.cron_server.ip) except Exception,e: return render_to_response('cron/cron_modf.html', {"user":request.user,"errorInfo":"更新失败,错误信息:"+str(e)}, context_instance=RequestContext(request)) try: sList = [cron.cron_server.ip] if cron.cron_server.keyfile == 1:resource = [{"hostname": cron.cron_server.ip, "port": int(cron.cron_server.port)}] else:resource = [{"hostname": cron.cron_server.ip, "port": int(cron.cron_server.port), "username": cron.cron_server.username,"password": cron.cron_server.passwd}] cron = Cron_Config.objects.get(id=cid) if request.FILES.get('cron_script'): cron.cron_script=request.FILES.get('cron_script') cron.save() ANS = ANSRunner(resource) if cron.cron_status == 0:ANS.run_model(host_list=sList,module_name="cron",module_args="""name={name} state=absent""".format(name=cron.cron_name)) else: if cron.cron_script: src = os.getcwd() + '/' + str(cron.cron_script) file_args = """src={src} dest={dest} owner={user} group={user} mode=755""".format(src=src,dest=cron.cron_script_path,user=cron.cron_user) ANS.run_model(host_list=sList,module_name="copy",module_args=file_args) cron_args = """name={name} minute='{minute}' hour='{hour}' day='{day}' weekday='{weekday}' month='{month}' user='******' job='{job}'""".format(name=cron.cron_name,minute=cron.cron_minute, hour=cron.cron_hour,day=cron.cron_day, weekday=cron.cron_week,month=cron.cron_month, user=cron.cron_user,job=cron.cron_command ) ANS.run_model(host_list=sList,module_name="cron",module_args=cron_args) except Exception,e: return render_to_response('cron/cron_modf.html',{"user":request.user,"errorInfo":"错误信息:"+str(e)}, context_instance=RequestContext(request))
def cron_config(request): serverList = Server_Assets.objects.all() if request.method == "GET": return render_to_response('cron/cron_config.html', { "user": request.user, "serverList": serverList }, context_instance=RequestContext(request)) elif request.method == "POST": try: server = Server_Assets.objects.get( id=request.POST.get('cron_server')) except: return JsonResponse({'msg': "主机资源不存在", "code": 500, 'data': []}) try: repeatCron = "" for ds in request.POST.get('cron_data').split('\n'): cron = ds.split('|') cron_name = cron[0] cron_time = cron[1] cron_data = cron_time.split(' ', 5) try: cron = Cron_Config.objects.create( cron_minute=cron_data[0], cron_hour=cron_data[1], cron_day=cron_data[2], cron_week=cron_data[3], cron_month=cron_data[4], cron_user=request.POST.get('cron_user'), cron_name=cron_name, cron_desc=cron_name, cron_server=server, cron_command=cron_data[5], cron_script=request.FILES.get('file', None), cron_status=request.POST.get('cron_user', 0), ) recordCron.delay(cron_user=str(request.user), cron_id=cron.id, cron_name=cron.cron_name, cron_content="导入计划任务", cron_server=server.ip) except: repeatCron = cron_name + "<br>" + repeatCron except: return JsonResponse({'msg': '数据格式不对', "code": 500, 'data': []}) if repeatCron: return JsonResponse({ 'msg': '添加成功,以下是重复内容:<br>' + repeatCron, "code": 200, 'data': [] }) else: return JsonResponse({'msg': '添加成功', "code": 200, 'data': []})
def cron_config(request): serverList = Server_Assets.objects.all() if request.method == "GET": return render_to_response('cron/cron_config.html',{"user":request.user,"serverList":serverList}, context_instance=RequestContext(request)) elif request.method == "POST": try: server = Server_Assets.objects.get(id=request.POST.get('cron_server')) except: return JsonResponse({'msg':"主机资源不存在","code":500,'data':[]}) try: repeatCron = "" for ds in request.POST.get('cron_data').split('\n'): cron = ds.split('|') cron_name = cron[0] cron_time = cron[1] cron_data = cron_time.split(' ',5) try: cron = Cron_Config.objects.create( cron_minute=cron_data[0], cron_hour=cron_data[1], cron_day=cron_data[2], cron_week=cron_data[3], cron_month=cron_data[4], cron_user=request.POST.get('cron_user'), cron_name=cron_name, cron_desc=cron_name, cron_server=server, cron_command=cron_data[5], cron_script=request.FILES.get('file', None), cron_status=request.POST.get('cron_status',0), ) recordCron.delay(cron_user=str(request.user),cron_id=cron.id,cron_name=cron.cron_name,cron_content="导入计划任务",cron_server=server.ip) if int(cron.cron_status) == 1: sList = [server.ip] if server.keyfile == 1:resource = [{"hostname": server.ip, "port": int(server.port)}] else:resource = [{"hostname": server.ip, "port": int(server.port),"username": server.username,"password": server.passwd}] ANS = ANSRunner(resource) ANS.run_model(host_list=sList,module_name="cron",module_args="""name={name} minute='{minute}' hour='{hour}' day='{day}' weekday='{weekday}' month='{month}' user='******' job='{job}'""".format(name=cron.cron_name,minute=cron.cron_minute, hour=cron.cron_hour,day=cron.cron_day, weekday=cron.cron_week,month=cron.cron_month, user=cron.cron_user,job=cron.cron_command ) ) except Exception,e: repeatCron = cron_name + "<br>" + repeatCron except: return JsonResponse({'msg':'数据格式不对',"code":500,'data':[]}) if repeatCron:return JsonResponse({'msg':'添加失败,以下是重复内容:<br>' + repeatCron,"code":200,'data':[]}) else:return JsonResponse({'msg':'添加成功',"code":200,'data':[]})
def cron_config(request): serverList = Server_Assets.objects.all() if request.method == "GET": return render_to_response('cron/cron_config.html',{"user":request.user,"serverList":serverList}, context_instance=RequestContext(request)) elif request.method == "POST": try: server = Server_Assets.objects.get(id=request.POST.get('cron_server')) except: return JsonResponse({'msg':"主机资源不存在","code":500,'data':[]}) try: repeatCron = "" for ds in request.POST.get('cron_data').split('\n'): cron = ds.split('|') cron_name = cron[0] cron_time = cron[1] cron_data = cron_time.split(' ',5) try: cron = Cron_Config.objects.create( cron_minute=cron_data[0], cron_hour=cron_data[1], cron_day=cron_data[2], cron_week=cron_data[3], cron_month=cron_data[4], cron_user=request.POST.get('cron_user'), cron_name=cron_name, cron_desc=cron_name, cron_server=server, cron_command=cron_data[5], cron_script=request.FILES.get('file', None), cron_status=request.POST.get('cron_status',0), ) recordCron.delay(cron_user=str(request.user),cron_id=cron.id,cron_name=cron.cron_name,cron_content="导入计划任务",cron_server=server.ip) if int(cron.cron_status) == 1: sList = [server.ip] if server.keyfile == 1:resource = [{"hostname": server.ip, "port": int(server.port)}] else:resource = [{"hostname": server.ip, "port": int(server.port),"username": server.username,"password": server.passwd}] ANS = ANSRunner(resource) ANS.run_model(host_list=sList,module_name="cron",module_args="""name={name} minute='{minute}' hour='{hour}' day='{day}' weekday='{weekday}' month='{month}' user='******' job='{job}'""".format(name=cron.cron_name,minute=cron.cron_minute, hour=cron.cron_hour,day=cron.cron_day, weekday=cron.cron_week,month=cron.cron_month, user=cron.cron_user,job=cron.cron_command ) ) except Exception,e: repeatCron = cron_name + "<br>" + repeatCron except: return JsonResponse({'msg':'数据格式不对',"code":500,'data':[]}) if repeatCron:return JsonResponse({'msg':'添加失败,以下是重复内容:<br>' + repeatCron,"code":200,'data':[]}) else:return JsonResponse({'msg':'添加成功',"code":200,'data':[]})
def cron_add(request): serverList = Server_Assets.objects.all() if request.method == "GET": return render_to_response('cron/cron_add.html',{"user":request.user,"serverList":serverList}, context_instance=RequestContext(request)) elif request.method == "POST": cron_status = request.POST.get('cron_status',0) try: server = Server_Assets.objects.get(id=request.POST.get('cron_server')) except: return render_to_response('cron/cron_add.html',{"user":request.user, "serverList":serverList, "errorInfo":"主机不存在,请检查是否被删除。"}, context_instance=RequestContext(request)) try: cron = Cron_Config.objects.create( cron_minute=request.POST.get('cron_minute'), cron_hour=request.POST.get('cron_hour'), cron_day=request.POST.get('cron_day'), cron_week=request.POST.get('cron_week'), cron_month=request.POST.get('cron_month'), cron_user=request.POST.get('cron_user'), cron_name=request.POST.get('cron_name'), cron_desc=request.POST.get('cron_desc'), cron_server=server, cron_command=request.POST.get('cron_command'), cron_script=request.FILES.get('cron_script', None), cron_script_path=request.POST.get('cron_script_path',None), cron_status=cron_status, ) recordCron.delay(cron_user=str(request.user),cron_id=cron.id,cron_name=cron.cron_name,cron_content="添加计划任务",cron_server=server.ip) except Exception,e: return render_to_response('cron/cron_add.html',{"user":request.user, "serverList":serverList, "errorInfo":"提交失败,错误信息:"+str(e)}, context_instance=RequestContext(request)) if int(cron_status) == 1: try: sList = [server.ip] if server.keyfile == 1:resource = [{"hostname": server.ip, "port": int(server.port)}] else:resource = [{"hostname": server.ip, "port": int(server.port),"username": server.username,"password": server.passwd}] ANS = ANSRunner(resource) if cron.cron_script: src = os.getcwd() + '/' + str(cron.cron_script) file_args = """src={src} dest={dest} owner={user} group={user} mode=755""".format(src=src,dest=cron.cron_script_path,user=cron.cron_user) ANS.run_model(host_list=sList,module_name="copy",module_args=file_args) result = ANS.handle_model_data(ANS.get_model_result(), 'copy',file_args) if result[0].get('status') != 'failed': cron_args = """name={name} minute='{minute}' hour='{hour}' day='{day}' weekday='{weekday}' month='{month}' user='******' job='{job}'""".format(name=cron.cron_name,minute=cron.cron_minute, hour=cron.cron_hour,day=cron.cron_day, weekday=cron.cron_week,month=cron.cron_month, user=cron.cron_user,job=cron.cron_command ) ANS.run_model(host_list=sList,module_name="cron",module_args=cron_args) result = ANS.handle_model_data(ANS.get_model_result(), 'cron',cron_args) except Exception,e: return render_to_response('cron/cron_add.html',{"user":request.user, "serverList":serverList, "errorInfo":"错误信息:"+str(e)}, context_instance=RequestContext(request)) if result[0].get('status') == 'failed': cron.delete() return render_to_response('cron/cron_add.html',{"user":request.user, "serverList":serverList, "errorInfo":"错误信息:"+script[0].get('msg')}, context_instance=RequestContext(request))
ANS.run_model(host_list=sList,module_name="copy",module_args=file_args) cron_args = """name={name} minute='{minute}' hour='{hour}' day='{day}' weekday='{weekday}' month='{month}' user='******' job='{job}'""".format(name=cron.cron_name,minute=cron.cron_minute, hour=cron.cron_hour,day=cron.cron_day, weekday=cron.cron_week,month=cron.cron_month, user=cron.cron_user,job=cron.cron_command ) ANS.run_model(host_list=sList,module_name="cron",module_args=cron_args) except Exception,e: return render_to_response('cron/cron_modf.html',{"user":request.user,"errorInfo":"错误信息:"+str(e)}, context_instance=RequestContext(request)) return HttpResponseRedirect('/cron_mod/{id}/'.format(id=cid)) elif request.method == "DELETE": try: recordCron.delay(cron_user=str(request.user),cron_id=cid,cron_name=cron.cron_name,cron_content="删除计划任务",cron_server=cron.cron_server.ip) sList = [cron.cron_server.ip] if cron.cron_server.keyfile == 1:resource = [{"hostname": cron.cron_server.ip, "port": int(cron.cron_server.port)}] else:resource = [{"hostname": cron.cron_server.ip, "port": int(cron.cron_server.port), "username": cron.cron_server.username,"password": cron.cron_server.passwd}] ANS = ANSRunner(resource) ANS.run_model(host_list=sList,module_name="cron",module_args="""name={name} state=absent""".format(name=cron.cron_name)) cron.delete() except Exception,e: return JsonResponse({'msg':'删除失败:'+str(e),"code":500,'data':[]}) return JsonResponse({'msg':'删除成功',"code":200,'data':[]}) @login_required() @permission_required('OpsManage.can_add_cron_config',login_url='/noperm/') def cron_config(request): serverList = Server_Assets.objects.all()
def cron_add(request): serverList = Server_Assets.objects.all() if request.method == "GET": return render_to_response('cron/cron_add.html', { "user": request.user, "serverList": serverList }, context_instance=RequestContext(request)) elif request.method == "POST": cron_status = request.POST.get('cron_status', 0) try: server = Server_Assets.objects.get( id=request.POST.get('cron_server')) except: return render_to_response('cron/cron_add.html', { "user": request.user, "serverList": serverList, "errorInfo": "主机不存在,请检查是否被删除。" }, context_instance=RequestContext(request)) try: cron = Cron_Config.objects.create( cron_minute=request.POST.get('cron_minute'), cron_hour=request.POST.get('cron_hour'), cron_day=request.POST.get('cron_day'), cron_week=request.POST.get('cron_week'), cron_month=request.POST.get('cron_month'), cron_user=request.POST.get('cron_user'), cron_name=request.POST.get('cron_name'), cron_desc=request.POST.get('cron_desc'), cron_server=server, cron_command=request.POST.get('cron_command'), cron_script=request.FILES.get('cron_script', None), cron_script_path=request.POST.get('cron_script_path', None), cron_status=cron_status, ) recordCron.delay(cron_user=str(request.user), cron_id=cron.id, cron_name=cron.cron_name, cron_content="添加计划任务", cron_server=server.ip) except Exception, e: return render_to_response('cron/cron_add.html', { "user": request.user, "serverList": serverList, "errorInfo": "提交失败,错误信息:" + str(e) }, context_instance=RequestContext(request)) if int(cron_status) == 1: cronList = Cron_Config.objects.filter( cron_server=request.POST.get('cron_server'), cron_user=request.POST.get('cron_user'), cron_status=1) try: tmpFile = "/tmp/" + request.POST.get( 'cron_user') + '.' + base.radString(length=4) with open(tmpFile, "w") as f: for cron in cronList: f.write('#' + cron.cron_name + '\n') cronStr = '{minute} {hour} {day} {week} {month} {command} \n'.format( minute=cron.cron_minute, hour=cron.cron_hour, day=cron.cron_day, week=cron.cron_week, month=cron.cron_month, command=cron.cron_command) f.write(cronStr) if os.path.exists(tmpFile): sshRbt = SSHManage(hostname=server.ip, password=server.passwd, username=server.username, port=int(server.port)) result = sshRbt.upload(localPath=tmpFile, remotePath='/var/spool/cron/' + request.POST.get('cron_user')) sshRbt.close() os.remove(tmpFile) if result.get('status') != 'success': return render_to_response( 'cron/cron_add.html', { "user": request.user, "serverList": serverList, "errorInfo": "任务条件数据库成功,更新远程主机Crontab失败。" }, context_instance=RequestContext(request)) except Exception, e: try: Cron_Config.objects.get( cron_name=request.POST.get('cron_name'), cron_server=server, cron_user=request.POST.get('cron_user')).delete() except: pass return render_to_response( 'cron/cron_add.html', { "user": request.user, "serverList": serverList, "errorInfo": "错误信息:" + str(e) }, context_instance=RequestContext(request))
context_instance=RequestContext(request)) except Exception, e: return render_to_response( 'cron/cron_add.html', { "user": request.user, "errorInfo": "错误信息:" + str(e) }, ) return HttpResponseRedirect('/cron_mod/{id}/'.format(id=cid)) elif request.method == "DELETE": try: recordCron.delay(cron_user=str(request.user), cron_id=cid, cron_name=cron.cron_name, cron_content="删除计划任务", cron_server=cron.cron_server.ip) cron.delete() except Exception, e: return JsonResponse({ 'msg': '删除失败:' + str(e), "code": 500, 'data': [] }) #获取改主机所有激活的计划任务 cronList = Cron_Config.objects.filter( cron_server=cron.cron_server, cron_status=1, cron_user=cron.cron_user, )
def cron_add(request): serverList = Server_Assets.objects.all() if request.method == "GET": return render_to_response('cron/cron_add.html', { "user": request.user, "serverList": serverList }, context_instance=RequestContext(request)) elif request.method == "POST": cron_status = request.POST.get('cron_status', 0) try: server = Server_Assets.objects.get( id=request.POST.get('cron_server')) except: return render_to_response('cron/cron_add.html', { "user": request.user, "serverList": serverList, "errorInfo": "主机不存在,请检查是否被删除。" }, context_instance=RequestContext(request)) try: cron = Cron_Config.objects.create( cron_minute=request.POST.get('cron_minute'), cron_hour=request.POST.get('cron_hour'), cron_day=request.POST.get('cron_day'), cron_week=request.POST.get('cron_week'), cron_month=request.POST.get('cron_month'), cron_user=request.POST.get('cron_user'), cron_name=request.POST.get('cron_name'), cron_desc=request.POST.get('cron_desc'), cron_server=server, cron_command=request.POST.get('cron_command'), cron_script=request.FILES.get('cron_script', None), cron_script_path=request.POST.get('cron_script_path', None), cron_status=cron_status, ) recordCron.delay(cron_user=str(request.user), cron_id=cron.id, cron_name=cron.cron_name, cron_content="添加计划任务", cron_server=server.ip) except Exception, e: return render_to_response('cron/cron_add.html', { "user": request.user, "serverList": serverList, "errorInfo": "提交失败,错误信息:" + str(e) }, context_instance=RequestContext(request)) if int(cron_status) == 1: try: sList = [server.ip] if server.keyfile == 1: resource = [{ "hostname": server.ip, "port": int(server.port) }] else: resource = [{ "hostname": server.ip, "port": int(server.port), "username": server.username, "password": server.passwd }] ANS = ANSRunner(resource) if cron.cron_script: src = os.getcwd() + '/' + str(cron.cron_script) file_args = """src={src} dest={dest} owner={user} group={user} mode=755""".format( src=src, dest=cron.cron_script_path, user=cron.cron_user) ANS.run_model(host_list=sList, module_name="copy", module_args=file_args) result = ANS.handle_model_data(ANS.get_model_result(), 'copy', file_args) if result[0].get('status') != 'failed': cron_args = """name={name} minute='{minute}' hour='{hour}' day='{day}' weekday='{weekday}' month='{month}' user='******' job='{job}'""".format( name=cron.cron_name, minute=cron.cron_minute, hour=cron.cron_hour, day=cron.cron_day, weekday=cron.cron_week, month=cron.cron_month, user=cron.cron_user, job=cron.cron_command) ANS.run_model(host_list=sList, module_name="cron", module_args=cron_args) result = ANS.handle_model_data(ANS.get_model_result(), 'cron', cron_args) except Exception, e: return render_to_response( 'cron/cron_add.html', { "user": request.user, "serverList": serverList, "errorInfo": "错误信息:" + str(e) }, context_instance=RequestContext(request)) if result[0].get('status') == 'failed': cron.delete() return render_to_response( 'cron/cron_add.html', { "user": request.user, "serverList": serverList, "errorInfo": "错误信息:" + script[0].get('msg') }, context_instance=RequestContext(request))