def command_group_result(request): if request.method == 'GET': ret_api = saltstack() g_name = request.GET.get('g_name') command = request.GET.get('command') selectIps = [] list_coun = [] project_success = [] project_fail = [] GroupList = Group.objects.all() for groupname in GroupList: if groupname.name in g_name: print "slected group:",groupname.name for selected_ip in HostList.objects.filter(group__name = groupname.name): host = HostList.objects.filter(ip=selected_ip.ip) for host in host: key_id = host.hostname sapi = SaltAPI(url=ret_api["url"],username=ret_api["user"],password=ret_api["passwd"]) ret = sapi.remote_execution(key_id,'cmd.run',command) list_coun.append(host) num = len(list_coun) wirte_track_mark(str(num)) all_result = salt_return.objects.all()[0:num] for projects in all_result: project=projects.success if project == '1': project_success.append(project) else: project_fail.append(project) success_num = len(project_success) fail_num = len(project_fail) result = {'success':success_num,'fail':fail_num} return HttpResponse(json.dumps(result))
def command_result(request): if request.method == 'GET': ret_api = saltstack() key_id = request.GET.get('hostname') command = request.GET.get('command') print key_id, command # host = HostList.objects.filter(ip=ip) sapi = SaltAPI(url=ret_api["url"], username=ret_api["user"], password=ret_api["passwd"]) try: ret = sapi.remote_execution(key_id, 'cmd.run', command) for i in range(len(ret)): ret = ret[i][key_id] r_data = {'host': key_id, 'ret': ret} data = json.dumps(r_data) real_ip = get_clinet_ip(request) Cmd_Record = cmd_record(hostname=key_id, name=request.user, ip=real_ip, cmd=command) Cmd_Record.save() return HttpResponse(data) except: print '123' return HttpResponse('ok')
def command_group_result(request): if request.method == 'GET': ret_api = saltstack() g_name = request.GET.get('g_name') command = request.GET.get('command') selectIps = [] list_coun = [] project_success = [] project_fail = [] GroupList = Group.objects.all() # salt_return.objects.filter().delete() for groupname in GroupList: if groupname.name in g_name: print "slected group:", groupname.name for selected_ip in HostList.objects.filter( group__name=groupname.name): host = HostList.objects.filter(ip=selected_ip.ip) for host in host: key_id = host.hostname sapi = SaltAPI(url=ret_api["url"], username=ret_api["user"], password=ret_api["passwd"]) try: ret = sapi.remote_execution( key_id, 'cmd.run', command) list_coun.append(host) ret = ret[0][key_id] b = salt_return(jid=command, host=key_id, success='1', result=ret) b.save() except: print "Connect %s failed" % key_id b = salt_return(jid=command, host=key_id, success='0', result='failed') b.save() num = len(list_coun) wirte_track_mark(str(num)) all_result = salt_return.objects.all()[0:num] for projects in all_result: project = projects.success if project == '1': project_success.append(project) else: project_fail.append(project) success_num = len(project_success) fail_num = len(project_fail) result = {'success': success_num, 'fail': fail_num} return HttpResponse(json.dumps(result))
def command_result(request): if request.method == 'GET': ret_api = saltstack() ip = request.GET.get('ip') command = request.GET.get('command') host = HostList.objects.filter(ip=ip) for host in host: key_id = host.hostname sapi = SaltAPI(url=ret_api["url"],username=ret_api["user"],password=ret_api["passwd"]) ret = sapi.remote_execution(key_id,'cmd.run',command) all_result = salt_return.objects.all().order_by("-id")[0:1] for ret in all_result: key_id = ret.host ret = ret.result r_data = {'host':key_id,'ret':ret} data = json.dumps(r_data) # print data return HttpResponse(data)
def command_result(request): if request.method == 'GET': ret_api = saltstack() ip = request.GET.get('ip') command = request.GET.get('command') host = HostList.objects.filter(ip=ip) for host in host: key_id = host.hostname sapi = SaltAPI(url=ret_api["url"], username=ret_api["user"], password=ret_api["passwd"]) ret = sapi.remote_execution(key_id, 'cmd.run', command) all_result = salt_return.objects.all().order_by("-id")[0:1] for ret in all_result: key_id = ret.host ret = ret.result r_data = {'host': key_id, 'ret': ret} data = json.dumps(r_data) # print data return HttpResponse(data)
def approval_accept(request): requestid_list = request.GET.get("requestid_list") request_status = request.GET.get("request_status") request_user = request.GET.get("request_user") request_nick_name_list = [] requestid_list = requestid_list.split(",") for key in range(0, len(requestid_list) - 1): host_request = HostRequest.objects.filter(id=requestid_list[key]) request_nick_name_list.append(host_request[0].nick_name) if request_status == "1": hostname = host_request[0].hostname create_time = host_request[0].create_time c.execute("select auth_user.* from auth_user where username=%s", [str(request_user)]) filteruser = c.fetchone() if filteruser is not None: user = get_user_dict(filteruser) email = user["email"] ### 获取 user user = "" user_part = email.split('@')[0] for user_p in user_part.split('.'): user = user + user_p #### user ssh-keygen user_cmd = "ssh-keygen -t dsa -P '' -f /home/" + user + "/.ssh/id_rsa" #### chmod u+w /etc/sudoers chw_cmd = "chmod u+w /etc/sudoers" #### 添加 sudo 权限 sed_cmd = "sed -i '$a " + user + " ALL=(ALL) NOPASSWD:ALL ' /etc/sudoers" #### chmod u-w /etc/sudoers chw_cut_cmd = "chmod u-w /etc/sudoers" cf = ConfigParser.ConfigParser() cf.read("/web/CMDB/app/backend/config.ini") salt_url = cf.get("saltstack", "url") salt_user = cf.get("saltstack", "user") salt_pass = cf.get("saltstack", "pass") sapi = SaltAPI(url=salt_url, username=salt_user, password=salt_pass) #### 创建用户 print sapi.remote_execution(hostname, 'user.add', {'arg1': user}) aDay = timedelta(days=30) time_now = create_time + aDay print sapi.remote_execution( hostname, 'cmd.run', {'arg1': "usermod -e " + str(time_now) + " " + user}) #### 生成 ssh-key print sapi.remote_execution(hostname, 'cmd.run', { 'arg1': user_cmd, 'arg2': 'runas=' + user }) #### cp.get_file authrized_keys print sapi.remote_execution( hostname, 'cp.get_file', { 'arg1': "salt://" + user + "_cmdb_login_id_rsa_pub", 'arg2': "/home/" + user + "/.ssh/authorized_keys" }) #### cp.get_file id_rsa print sapi.remote_execution( hostname, 'cp.get_file', { 'arg1': "salt://" + user + "_cmdb_login_id_rsa", 'arg2': "/home/" + user + "/.ssh/id_rsa" }) #### cp.get_file id_rsa.pub print sapi.remote_execution( hostname, 'cp.get_file', { 'arg1': "salt://" + user + "_cmdb_login_id_rsa_pub", 'arg2': "/home/" + user + "/.ssh/id_rsa.pub" }) #### chowd user:user .ssh print sapi.remote_execution( hostname, 'cmd.run', { 'arg1': "chown -R " + user + ":" + user + " /home/" + user + "/.ssh" }) ### 修改 sudoers 添加 username sudo 权限 print sapi.remote_execution(hostname, 'cmd.run', { 'arg1': chw_cmd, 'arg2': 'runas=root' }) print sapi.remote_execution(hostname, 'cmd.run', { 'arg1': sed_cmd, 'arg2': 'runas=root' }) print sapi.remote_execution(hostname, 'cmd.run', { 'arg1': chw_cut_cmd, 'arg2': 'runas=root' }) # lease = Lease() # lease.hostname = hostname # lease.username = request_user # lease.save() host_request.update(status=request_status) #### send mail content = "您所申请的主机:" + str(request_nick_name_list) + "已经通过审核,可以通过跳板机登陆" send_mail("admin", request_user, "主机申请", content) return HttpResponseRedirect("/approval/get_approval_accept_page/")
sys.setdefaultencoding('utf8') # Create your views here. config_list = dbconfig() db = mysql.connect(host=config_list["host"], user=config_list["user"], passwd=config_list["pass"], db=config_list["name"], charset="utf8") db.autocommit(True) c = db.cursor() config_list_sal = saltconfig() sapi = SaltAPI(url=config_list_sal["salt_url"], username=config_list_sal["salt_user"], password=config_list_sal["salt_pass"]) #### approval #### @login_required def change_idc(request): idc_name = request.POST.get("idc_name") group_list = Group.objects.filter(idc_name=idc_name) group_list_dict = {} inum = 0 for group in group_list: group_list_dict[str(inum)] = group.__unicode__() inum += 1 group_name = ""