实现ftps的Python模块

时间:2008-10-16 09:33:39

标签: python ftps

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

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

感谢,

大卫。

7 个答案:

答案 0 :(得分:9)

我相信您可以通过简单地使用其FTP实现来使用Twisted来实现FTPS,但是将FTPClient.connectFactory属性更改为使用connectSSL而不是connectTCP执行某项操作的函数。< / p>

你确定要使用FTPS吗? SFTP is a different, better, and much more popular protocol这些天:Twisted也包含an SFTP implementation

答案 1 :(得分:7)

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

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

答案 2 :(得分:4)

M2Cypto有一个FTPS模块。来自documentation

>>> 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,如果你想这样做)是更容易的解决方案。

答案 3 :(得分:3)

Twisted似乎在 conch 子项目下有一些FTPS(FTP over SSL)实现。我不是扭曲的专家,但是Glyph扭曲的男人本人,列在这个网站上。也许通过跟随他的answer到另一个问题,你可以找到更多细节(祝你好运)。

答案 4 :(得分: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

答案 5 :(得分:0)

我自己没有尝试过(是的,我只是使用Google并遵循了一些链接),但http://www.lag.net/paramiko/似乎是推荐的解决方案。从粗略的一瞥,它是纯Python中的SSH实现,允许像FTP这样的隧道。

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

答案 6 :(得分:0)

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

无论如何,如果你感兴趣的话可以在:

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