Python 用の無料の ftps モジュールを教えてくれる人がいるかどうか疑問に思っていました。
私はPythonの完全な初心者ですが、これは仕事のプロジェクトに必要なものです。サードパーティの ftps サーバーに接続するには、ftps クライアントが必要です。
ありがとう、
デビッド。
Twistedを使用してFTPSを実装するには、FTP実装を使用するだけでよいと思いますが、属性を。ではなくFTPClient.connectFactory
何かを実行する関数に変更します。connectSSL
connectTCP
FTPSが必要ですか? SFTPは、最近では異なり、より優れた、はるかに人気のあるプロトコルです。TwistedにはSFTP実装も含まれています。
Python バージョン 2.7.1 の ftplib モジュールには、TLS サポートなど、必要な機能がすべて含まれています。
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.'
>>>
または、サードパーティ モジュールの使用を最小限に抑えたい場合は、標準ライブラリのftplib .FTP クラスを (Python に) 組み込みの SSL サポートでサブクラス化できるはずです。ただし、 M2Crypto (または、そのようにしたい場合はTwisted ) の方が簡単な解決策です。
Twistedは、 conchサブプロジェクトの下で FTPS (FTP over SSL) の実装を行っているようです。私はねじれの専門家ではありませんが、ねじれた男であるGlyph自身がこのサイトにリストされています。おそらく、別の質問に対する彼の回答をたどることで、詳細を見つけることができます (頑張ってください)。
サーバーの実装については、pyftpdlib を参照してください: http://code.google.com/p/pyftpdlib/ 動作中の FTPS サーバーを実装するデモ スクリプトが含まれています: http://code.google.com/p/ pyftpdlib/ソース/ブラウズ/トランク/デモ/tls_ftpd.py
クライアントの実装に関しては、python 2.7 および 3.2 に含まれるパッチを提供しました。 http://bugs.python.org/issue2054
Windows 用の無料の sftp クライアントが見つからなかったため、Python のサブプロセス モジュールを使用して Putty の PSFTP をラップすることになりました。もし私がそれについて知っていれば、私はおそらくグリフによって言及されたねじれた実装を使用したでしょう。
とにかく、興味がある場合は、次の場所で入手できます。
私は自分で試したことはありません (はい、Google を使用していくつかのリンクをたどっただけです) が、http: //www.lag.net/paramiko/ が推奨される解決策のようです。ざっと見たところ、これは純粋な Python での SSH 実装であり、FTP などのトンネリングを可能にします。
更新: コメンターから、sftp と ftps を混同していると指摘されました。申し訳ありません。少なくとも Paramiko を簡単に調査して、要件に一致するかどうかを確認することをお勧めします。