【问题标题】:Python module that implements ftps实现 ftps 的 Python 模块
【发布时间】:2008-10-16 09:33:39
【问题描述】:

我想知道是否有人可以为我推荐一个免费的 python ftps 模块。

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

谢谢,

大卫。

【问题讨论】:

    标签: python ftps


    【解决方案1】:

    我相信您可以使用 Twisted 来实现 FTPS,只需使用其 FTP 实现,但将 FTPClient.connectFactory 属性更改为与 connectSSL 而不是 connectTCP 执行某些操作的函数。

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

    【讨论】:

    • connectSSL 可用于隐式 FTPS 连接,但显式 FTPS(使用 AUTH 命令)比隐式 FTPS 更受欢迎。仍然 Twisted FTP 实施是一个好的开始。实施 AUTH(和 co)以及更改 DTP.connectionMade 可能是下一步。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 感谢插件 :)。但是 FTPS(FTP,但通过 SSL)与 SFTP(通过 SSH 传输文件,与 FTP 协议完全无关)不是一回事。
        【解决方案5】:

        至于服务器实现,你可以看看 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

        【讨论】:

          【解决方案6】:

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

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

          【讨论】:

          • sftp 和 ftps 不一样。
          【解决方案7】:

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

          如果您有兴趣,请访问:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-05-06
            • 1970-01-01
            • 2019-05-01
            • 2020-11-29
            • 2011-12-13
            • 2015-02-27
            • 1970-01-01
            相关资源
            最近更新 更多