def ssh_terminal(request, pk): server_obj = ServerAssets.objects.select_related('assets').get(id=pk) ssh_server_ip = server_obj.assets.asset_management_ip if request.method == 'GET': download_file = request.GET.get('download_file') if download_file: download_file_path = os.path.join(settings.MEDIA_ROOT, 'admin_files', request.user.username, 'download', ssh_server_ip) sftp = SFTP(ssh_server_ip, server_obj.port, server_obj.username, CryptPwd().decrypt_pwd(server_obj.password)) response = sftp.download_file(download_file, download_file_path) return response else: remote_ip = request.META.get('REMOTE_ADDR') return render(request, 'assets/ssh_terminal.html', locals()) elif request.method == 'POST': try: upload_file = request.FILES.get('upload_file') upload_file_path = os.path.join(settings.MEDIA_ROOT, 'fort_files', request.user.username, 'upload', server_obj.assets.asset_management_ip) sftp = SFTP(ssh_server_ip, server_obj.port, server_obj.username, CryptPwd().decrypt_pwd(server_obj.password)) sftp.upload_file(upload_file, upload_file_path) return JsonResponse({'code': 200, 'msg': '上传成功!文件默认放在{}用户家目录下'.format(server_obj.username)}) except Exception as e: return JsonResponse({'code': 500, 'msg': '上传失败!{}'.format(e)})
def terminal(request, server_id, fort_user_id): server_obj = ServerAssets.objects.select_related('assets').get(id=server_id) fort_user_obj = FortServerUser.objects.get(id=fort_user_id) fort_username = fort_user_obj.fort_username server_ip = server_obj.assets.asset_management_ip if request.method == 'GET': download_file = request.GET.get('download_file') if download_file: download_file_path = os.path.join(settings.MEDIA_ROOT, 'fort_files', request.user.username, 'download', server_ip) sftp = SFTP(server_ip, server_obj.port, fort_username, fort_user_obj.fort_password) response = sftp.download_file(download_file, download_file_path) return response else: group_name = str(uuid.uuid4()) return render(request, 'fort/terminal.html', locals()) elif request.method == 'POST': try: upload_file = request.FILES.get('upload_file') upload_file_path = os.path.join(settings.MEDIA_ROOT, 'fort_files', request.user.username, 'upload', server_obj.assets.asset_management_ip) sftp = SFTP(server_ip, server_obj.port, fort_username, fort_user_obj.fort_password) sftp.upload_file(upload_file, upload_file_path) return JsonResponse({'code': 200, 'msg': '上传成功!文件默认放在/home/{}路径下'.format(fort_username)}) except Exception as e: return JsonResponse({'code': 500, 'msg': '上传失败!{}'.format(e)})