实现FTPS的Python模块

9 投票
7 回答
10217 浏览
提问于 2025-04-11 18:39

我在想有没有人能推荐一个免费的 Python ftps 模块。

我对 Python 完全是个新手,但这是我工作项目需要的东西。我需要一个 ftps 客户端来连接一个第三方的 ftps 服务器。

谢谢,

大卫。

7 个回答

4

M2Crypto 有一个 FTPS 模块。从 文档 中可以了解到:

>>> from M2Crypto import ftpslib
>>> f = ftpslib.FTP_TLS()
>>> f.connect('', 9021)
'220 spinnaker.dyndns.org M2Crypto (Medusa) FTP/TLS server v0.07 ready.'
>>> f.auth_tls()
>>> f.set_pasv(0)
>>> f.login('ftp', 'ngps@')
'230 Ok.'
>>> f.retrlines('LIST')
-rw-rw-r--   1 0        198          2326 Jul  3  1996 apache_pb.gif
drwxrwxr-x   7 0        198          1536 Oct 10  2000 manual
drwxrwxr-x   2 0        198           512 Oct 31  2000 modpy
drwxrwxr-x   2 0        198           512 Oct 31  2000 bobo
drwxr-xr-x   2 0        198         14336 May 28 15:54 postgresql
drwxr-xr-x   4 100      198           512 May 16 17:19 home
drwxr-xr-x   7 100      100          3584 Sep 23  2000 openacs
drwxr-xr-x  10 0        0             512 Aug  5  2000 python1.5
-rw-r--r--   1 100      198           326 Jul 29 03:29 index.html
drwxr-xr-x  12 0        0             512 May 31 17:08 python2.1
'226 Transfer complete'
>>> f.quit()
'221 Goodbye.'
>>>

另外,如果你想减少使用第三方模块,可以尝试用 Python 自带的库中的 ftplib.FTP 类,并加上内置的 SSL 支持。不过,使用 M2Crypto(或者如果你愿意的话,也可以用 Twisted)会更简单一些。

8

Python 2.7.1 版本中的 ftplib 模块包含了你所需要的所有功能,包括对 TLS 的支持。

http://docs.python.org/library/ftplib.html#module-ftplib

9

我觉得你可以用Twisted来实现FTPS,只需要用它的FTP功能,然后把FTPClient.connectFactory这个属性改成一个可以用connectSSL的函数,而不是用connectTCP

不过你确定真的想要FTPS吗?现在SFTP是一个不同的、更好用、而且更流行的协议。Twisted里面也有SFTP的实现

撰写回答