def equip_api(request): #下面客户传来的数据接收并存库 result = {"statue": "error", "data": ""} if request.method == "POST": requestData = request.POST hostname = requestData.get("hostname") mac = requestData.get("mac") ip = request.META["REMOTE_ADDR"] system_type = requestData.get("version") memory = requestData.get("memory") disk = requestData.get("disk") cpu_count = requestData.get("cpu_count") system_version = requestData.get("system") try: eq = Equipment() eq.hostname = hostname eq.mac = mac eq.ip = ip eq.sys_type = system_type eq.memory = memory eq.disk = disk eq.cpu_count = cpu_count eq.sys_version = system_version eq.save() except Exception as e: result["data"] = str(e) else: result["statue"] = "success" result["data"] = "your data is saved" else: result["data"] = "request must be post" return JsonResponse(result)
def server_add(request): ''' 服务器添加方法,根据ip、port、username、password对服务器操作:远程登录、脚本上传、脚本远程执行 :param request: :return: ''' result = {'status':'error','data':''} if request.method == 'POST': ip = request.POST.get('ip') port = request.POST.get('port') username = request.POST.get('username') password = request.POST.get('password') print ip,port,username,password if ip and port and username and password: #save db equipment = Equipment() equipment.ip = ip equipment.port = port equipment.username = username equipment.password = password equipment.save() #连接远程虚拟机 connect = connect_server(ip,port,username,password) if connect['status'] == 'success': trans = connect['data'] # 用于文件上传和下载的sftp服务 sftp = paramiko.SFTPClient.from_transport(trans) # 远程执行命令服务 ssh = paramiko.SSHClient() ssh._transport = trans # 创建目录 stdin,stdout,stderr = ssh.exec_command('mkdir CMDBClient') time.sleep(1) # 上传文件 sftp.put('sftpDir/getData.py','CMDBClient/getData.py') sftp.put('sftpDir/sendData.py', 'CMDBClient/sendData.py') sftp.put('sftpDir/main.py', 'CMDBClient/main.py') # 调用脚本 stdin,stdout,stderr = ssh.exec_command('python CMDBClient/main.py') trans.close() # 连接成功状态记录到数据库 equipment = Equipment.objects.get(ip=ip) equipment.status = 'True' equipment.save() else: result['data'] = connect['data'] # 连接失败状态记录到数据库 equipment = Equipment.objects.get(ip = ip) equipment.status = 'False' equipment.save() else: result['data'] = 'ip and port and username and password not be null' else: result['data'] = 'your request must be post' return JsonResponse(result)