首页 > 其他分享 >Django实现文件上传、文件列表查看、修改、限流和日志记录2

Django实现文件上传、文件列表查看、修改、限流和日志记录2

时间:2023-08-13 16:34:29浏览次数:96  
标签:文件 key 秘钥 限流 ssh file Django 上传

Django实现文件上传、文件列表查看、修改、限流和日志记录2

本章节优化新增功能使用ssh 秘钥连接远程服务器进行文件上传

使用ssh私钥连接远程服务器上传文件

使用SSH私钥连接远程服务器并上传文件,你可以使用paramiko库来实现SSH连接和文件传输的功能。

首先,确保你已经生成了SSH密钥对,并将私钥文件保存在本地。

用paramiko库来建立SSH连接,并使用key_filename参数指定私钥文件的路径。然后,我们使用sftp.putfo()方法将文件对象上传到远程服务器的指定目录。

Django项目环境基于上一章节的项目环境

生成秘钥

创建秘钥并使用SSH和秘钥进行连接,需要将生成的秘钥存放在项目中后面使用连接:



#生成RSA秘钥对
ssh-keygen -t rsa -b 2048 -f private_key.pem

#选择保存秘钥的路径和文件名。默认情况下,私钥将保存在~/.ssh/id_rsa,公钥将保存在~/.ssh/id_rsa.pub,在生成秘钥对的过程中,您可以选择设置一个密码来保护私钥文件。这是可选的,如果您不希望设置密码,请直接按回车跳过。
# 生成秘钥对后,将公钥复制到远程服务器。您可以使用以下命令将公钥复制到远程服务器,将username和server_ip替换为实际的用户名和服务器IP地址:
ssh-copy-id -i private_key.pem.pub  [email protected]

#通过SSH和秘钥进行测试连接
ssh -i private_key.pem  [email protected]


配置上传视图

然后,在file_upload_app/views.py文件中,添加一个新的视图函数来处理文件上传:

使用paramiko库来建立SSH连接,并使用key_filename参数指定私钥文件的路径。然后,我们使用sftp.putfo()方法将文件对象上传到远程服务器的指定目录。

import paramiko

def upload_file(request):
    if request.method == 'POST':
        file = request.FILES.get('file')
        if file is not None:
            
            #秘钥连接
            private_key_path = '/git/Python/file_upload/sleepy_bear.pem'  # 替换为你的私钥文件路径
            private_key = paramiko.RSAKey(filename=private_key_path)
            ssh = paramiko.SSHClient()
            ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            ssh.connect('110.40.168.137', username='root', pkey=private_key)

            try:
                # 上传文件到远程服务器的指定目录
                remote_file_path = '/data/' + file.name
                sftp = ssh.open_sftp()
                sftp.putfo(file, remote_file_path)
                sftp.close()
                ssh.close()

                return HttpResponse('文件上传成功')
            except Exception as e:
                return HttpResponse('文件上传失败:{}'.format(str(e)))

    return render(request, 'upload_file.html')

 

至此,使用安全秘钥连接远程服务器已经优化完成

标签:文件,key,秘钥,限流,ssh,file,Django,上传
From: https://www.cnblogs.com/weiweirui/p/17626710.html

相关文章

  • Django实现文件上传、文件列表查看、修改、限流和日志记录1
    Django实现文件上传、文件列表查看、修改、限流和日志记录1上一章已经实现了文件的上传到项目的指定目录中,这章我们继续乘胜追击继续优化实现。一般都是上传文件到后端服务器上,因此需要建立一个远程服务器的连接,本章连接远程服务器实现文件上传实现点击上传本地文件到远程服务......
  • pyspark写入文件
    ##py_spark_rdd2py.py#py_learn##CreatedbyZ.Steveon2023/8/1311:39.##1.rdd.collect()将rdd变为list#2.rdd.reduce()不分组,对rdd数据做两两聚合frompysparkimportSparkConf,SparkContextconf=SparkConf().setMaster("local[*]")......
  • 文件属性
    简介linux是多用户系统,不同用户处于不同地位修改文件/目录所属用户与权限 chown(changeowner):修改所属用户与组。chmod(changemode):修改用户的权限。查看文件/目录所属用户和组ll或者ls-l 第一个字母:当为d则是目录当为-则是文件;若是l则表示为链......
  • chfs共享文件系统
    chfs简介官网地址:http://iscute.cn/chfsCuteHttpFileServer/chfs是一个免费的、HTTP协议的文件共享服务器,使用浏览器可以快速访问。它具有以下特点:单个文件,核心功能无需其他文件跨平台运行,支持主流平台:Windows,Linux和Mac界面简洁,简单易用支持扫码下载和手机端访问,手机与电脑之间......
  • Typora上传文件到博客园解决图片问题
    EasyBlogImageForTypora使用Typora写作,图片即时同步到博客网站,无需第三方图床,写完可直接粘贴。支持网络图片上传。适用范围本程序基于.netcore3.1开发,支持在win-x64,macosx-x64系统运行,免安装。linux暂时不考虑,如果有需要再说。程序的上传服务是使用MetaWebBlogAPI,MetaWe......
  • Windows11 操作系统 SysWOW64 文件夹的作用
    Windows11操作系统中的SysWOW64文件夹是一个重要的系统目录,它在某些方面扮演着特殊的角色。在这篇文章中,我将详细介绍SysWOW64文件夹的作用,并举例说明它在操作系统中的具体应用。首先,让我们了解一下该文件夹的背景和目的。SysWOW64文件夹是Windows64位操作系统中的一个......
  • 如何修改 Fiori Elements 工程包含的本地注解(annotations)文件试读版
    本教程前一篇文章:8.如何找到SAPFioriElements应用某个字段显示值具体的数据源,笔者试图解答我的知识星球里一个朋友的提问:在WebIde(SAPUI版本1.97.0)生成FioriElements的Overviewpage并发布后,再次在消费视图中修改UI注解后,本地运行该Overviewpage应用发现页面已经变动,......
  • Nginx配置不记录静态文件、过期时间
    用户访问web网站,通常日志文件会记录很多web站点上的一些静态文件信息,如果长期不处理,日志文件会越来越大,占用的系统资源也越大,此时就需要我们配置不记录静态文件和过期时间,减少日志文件记录过多不必要的内容信息和系统资源占用。1配置1.1编写conf文件[root@host~]#vim/usr/local/......
  • SAP Fiori Elements 应用里的 ui5.yaml 文件详解试读版
    本教程第4篇文章,我们介绍了本地启动SAPFioriElements应用的三种模式。4.SAPFioriElements本地应用启动的三种模式辨析以默认方式即命令行yarnstart启动之后,项目文件夹里的ui5.yaml文件会默认被加载并解析。ui5.yaml这个文件,在本地开发FreestyleUI5时也会......
  • 通过重写js脚本文件的例子看文件操作
    有以下文件:相对路径:"Resources/MainWindow/MsgHtml/msgtmpl.txt"文件内容: 要求:由于将要进行通信,我们将external0这个网页对象作为qq的发送者,这是可行的,然而接收者只有这一个对象external是不够的,我们将上面的txt文件作为一个初始版本,最后要进行更改,并最终要写入js文件中。......