【发布时间】:2008-10-16 09:33:39
【问题描述】:
我想知道是否有人可以为我推荐一个免费的 python ftps 模块。
我是 python 的新手,但这是我在工作项目中需要的东西。我需要一个 ftps 客户端来连接到第 3 方 ftps 服务器。
谢谢,
大卫。
【问题讨论】:
我想知道是否有人可以为我推荐一个免费的 python ftps 模块。
我是 python 的新手,但这是我在工作项目中需要的东西。我需要一个 ftps 客户端来连接到第 3 方 ftps 服务器。
谢谢,
大卫。
【问题讨论】:
我相信您可以使用 Twisted 来实现 FTPS,只需使用其 FTP 实现,但将 FTPClient.connectFactory 属性更改为与 connectSSL 而不是 connectTCP 执行某些操作的函数。
您确定要使用 FTPS 吗? SFTP is a different, better, and much more popular protocol 这些天:Twisted 也包含 an SFTP implementation。
【讨论】:
Python 2.7.1 版中的 ftplib 模块具有您需要的所有功能,包括 TLS 支持。
【讨论】:
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,如果你想这样做的话)是更简单的解决方案。
【讨论】:
至于服务器实现,你可以看看 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
【讨论】:
我自己没有尝试过(是的,我只是使用谷歌并点击了一些链接),但http://www.lag.net/paramiko/ 似乎是推荐的解决方案。粗略一看,它是纯 Python 中的 SSH 实现,它允许为 FTP 之类的东西建立隧道。
更新:一位评论者指出我混淆了 sftp 和 ftps,抱歉。我仍然建议至少简要调查一下 Paramiko,看看它是否符合要求。
【讨论】:
我找不到适用于 Windows 的免费 sftp 客户端,所以我最终使用 python 的 subprocess 模块包装了 Putty 的 PSFTP。 如果我知道的话,我可能会使用 Glyph 提到的扭曲实现。
如果您有兴趣,请访问:
【讨论】: