首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python连接到显式FTPS (FTPES) (错误)

使用Python连接到显式FTPS (FTPES) (错误)
EN

Stack Overflow用户
提问于 2022-05-06 15:46:52
回答 1查看 142关注 0票数 0

我上传一个文件ftp,并不断得到一个"ssl.SSLEOFError: EOF发生违反协议(_ssl.c:2756)“错误。

代码语言:javascript
复制
    class MyFTP_TLS(ftplib.FTP_TLS):
    """Explicit FTPS, with shared TLS session"""
    def ntransfercmd(self, cmd, rest=None):
        conn, size = ftplib.FTP.ntransfercmd(self, cmd, rest)
        if self._prot_p:
            session = self.sock.session
            if isinstance(self.sock, ssl.SSLSocket):
                    session = self.sock.session
            conn = self.context.wrap_socket(conn,
                                            server_hostname=self.host,
                                            session=session)  # this is the fix
        return conn, size
tp = MyFTP_TLS()
ftp.ssl_version = ssl.PROTOCOL_TLSv1_2
ftp.connect(server, 21)
ftp.set_pasv(True)
ftp.auth()
ftp.prot_p()
ftp.login(user, passwd)
print("Success connection")
ftp.set_debuglevel(2)
ftp.encoding = "utf-8"
#ftp.getwelcome()
with open(dest_filename,"rb") as file:
    try:
        ftp.storbinary(f"STOR {dest_filename}", file)
    except:
        ftp.quit()
        os.remove(dest_filename)
ftp.quit()
os.remove(dest_filename)

为什么这会导致一个错误?想法?

EN

回答 1

Stack Overflow用户

发布于 2022-05-16 15:13:47

这是我最后使用的代码。它扩展了ftp python类。基本上,做一个ftp = MyFTP_TLS(),然后执行您想要的所有调用,比如ftp.login(用户,passwd)等等。

代码语言:javascript
复制
`class MyFTP_TLS(ftplib.FTP_TLS):
#Explicit FTPS, with shared TLS session
def ntransfercmd(self, cmd, rest=None):
    conn, size = ftplib.FTP.ntransfercmd(self, cmd, rest)
    if self._prot_p:
        conn = self.context.wrap_socket(conn,
                                        server_hostname=self.host,
                                        session=self.sock.session)  # reuses TLS session            
        conn.__class__ = ReusedSslSocket  # we should not close reused ssl socket when file transfers finish
    return conn, size`
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72144210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档