9

我想知道是否有人可以将我指向 python 的免费 ftps 模块。

我是 python 的新手,但这是我工作项目需要的东西。我需要一个 ftps 客户端来连接到第 3 方 ftps 服务器。

谢谢,

大卫。

4

7 回答 7

9

我相信您可以使用 Twisted 通过简单地使用其 FTP 实现来实现 FTPS,但将FTPClient.connectFactory属性更改为使用connectSSL而不是connectTCP.

你确定你想要FTPS吗? SFTP 是一种不同的、更好的、更流行的协议:Twisted 也包含一个 SFTP 实现

于 2008-10-16T12:00:12.503 回答
7

Python 2.7.1 版中的 ftplib 模块具有您需要的所有功能,包括 TLS 支持。

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

于 2010-12-26T18:54:21.043 回答
4

M2Cypto有一个 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)SSL 支持来继承标准库的ftplib .FTP 类。不过, M2Crypto (或Twisted,如果你想这样做的话)是更简单的解决方案。

于 2008-10-18T20:16:09.363 回答
3

Twisted似乎在conch子项目下实现了一些 FTPS(基于 SSL 的 FTP)。我不是扭曲专家,但Glyph扭曲的人本人,在这个网站上列出。也许通过他对另一个问题的回答,您可以找到更多详细信息(祝您好运)。

于 2008-10-16T10:19:31.630 回答
2

至于服务器实现,您可以查看 pyftpdlib: http ://code.google.com/p/pyftpdlib/ 它包括一个实现工作 FTPS 服务器的演示脚本: http ://code.google.com/p/ pyftpdlib/source/browse/trunk/demo/tls_ftpd.py

至于客户端实现,我提供了一个补丁,它将包含在 python 2.7 和 3.2 中。 http://bugs.python.org/issue2054

于 2010-03-21T18:47:59.497 回答
0

我自己没有尝试过(是的,我只是使用谷歌并点击了一些链接),但http://www.lag.net/paramiko/似乎是推荐的解决方案。粗略一看,它是纯 Python 中的 SSH 实现,它允许为 FTP 之类的东西建立隧道。

更新:一位评论者指出我混淆了 sftp 和 ftps,抱歉。我仍然建议至少简要调查一下 Paramiko,看看它是否符合要求。

于 2008-10-16T09:36:43.403 回答
0

我找不到适用于 Windows 的免费 sftp 客户端,所以我最终使用 python 的 subprocess 模块包装了 Putty 的 PSFTP。如果我知道的话,我可能会使用 Glyph 提到的扭曲实现。

无论如何,如果您有兴趣,请访问:

http://code.google.com/p/psftplib/

于 2008-10-17T02:38:30.297 回答