需要FTPES会话重用

2024-04-29 03:10:23 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我试图连接到一个ftp服务器,以获取目录列表和下载文件。但是prot_p()函数之后的第一个命令引发了一个异常-从日志中产生这些错误:

*get* '150 Here comes the directory listing.\r\n'
*resp* '150 Here comes the directory listing.'
*get* '522 SSL connection failed; session reuse required: see require_ssl_reuse
option in vsftpd.conf man page\r\n'
*resp* '522 SSL connection failed; session reuse required: see require_ssl_reuse
 option in vsftpd.conf man page'
Traceback (most recent call last):
  File "C:\temp\download.py", line 29, in <module>
    files = ftps.dir()
  File "C:\Python27\lib\ftplib.py", line 522, in dir
    self.retrlines(cmd, func)
  File "C:\Python27\lib\ftplib.py", line 725, in retrlines
    return self.voidresp()
  File "C:\Python27\lib\ftplib.py", line 224, in voidresp
    resp = self.getresp()
  File "C:\Python27\lib\ftplib.py", line 219, in getresp
    raise error_perm, resp
ftplib.error_perm: 522 SSL connection failed; session reuse required: see requir
e_ssl_reuse option in vsftpd.conf man page

代码如下:

from ftplib import FTP_TLS
import os
import socket

host = 'example.com'
port = 34567
user = 'user1'
passwd = 'pass123'
acct = 'Normal'

ftps = FTP_TLS()

ftps.set_debuglevel(2)

ftps.connect(host, port)

print(ftps.getwelcome())
print(ftps.sock)

ftps.auth()

ftps.login(user, passwd, acct)

ftps.set_pasv(True)
ftps.prot_p()

print('Current directory:')
print(ftps.pwd())
files = ftps.dir()

ftps.quit()

我想安全地做到这一点,因此使用FTP over TLS显式。我认为可能需要操作FTPLib引用的Socket类中的一些设置。无法更改服务器上的设置。我已经用FileZilla客户机成功地测试了服务器,一个旧版本的WinSCP引发了同样的错误-尽管升级到最新版本修复了它。

有什么想法吗?


Tags: inpy服务器sslliblineconnectionresp