2010-10-11 130 views
1

我正在尝试使用ftps将文件上传到我们的FTP服务器。登录是琐碎的工作:如何在FTPS服务器上使用m2crypto上传文件

from M2Crypto import ftpslib 
ftp = ftpslib.FTP_TLS() 
ftp.connect(host) 
ftp.login(username, password) 

以及降入目录

for dir in directory: 
    ftp.cwd(dir) 

然而,试图检索目录内容时:

if directory_name not in ftp.nlst(): 
    ftp.mkd(directory_name) 

我得到522错误:

File "/usr/lib/python2.5/ftplib.py", line 459, in nlst 
    self.retrlines(cmd, files.append) 
File "/usr/lib/python2.5/ftplib.py", line 407, in retrlines 
    conn = self.transfercmd(cmd) 
File "/usr/lib/python2.5/ftplib.py", line 356, in transfercmd 
    return self.ntransfercmd(cmd, rest)[0] 
File "/var/lib/python-support/python2.5/M2Crypto/ftpslib.py", line 86, in ntransfercmd 
    conn, size = FTP.ntransfercmd(self, cmd, rest) 
File "/usr/lib/python2.5/ftplib.py", line 327, in ntransfercmd 
    resp = self.sendcmd(cmd) 
File "/usr/lib/python2.5/ftplib.py", line 241, in sendcmd 
    return self.getresp() 
File "/usr/lib/python2.5/ftplib.py", line 216, in getresp 
    raise error_perm, resp 
ftplib.error_perm: 522 Data connections must be encrypted. 

看来TL S仅用于握手,不用于传输。

它有一种方法来确保使用M2Crypto转移(我想上传文件使用storbinary())?如果不是,还有什么其他的选择?

回答

3

解决方案是login()后,明确要求保护的转移:

ftp.prot_p() 
相关问题