Модуль Python, который реализует ftps

Мне было интересно, может ли кто-нибудь указать мне на бесплатный ftps-модуль для python.

Я полный новичок на python, но это то, что мне нужно для рабочего проекта. Мне нужен ftps-клиент для подключения к FTP-серверу сторонних производителей.

спасибо,

Дэвид.

Ответ 1

Я считаю, что вы можете использовать Twisted для реализации FTPS, просто используя его реализацию FTP, но изменяя атрибут FTPClient.connectFactory, чтобы быть функцией, которая делает что-то с connectSSL, а не connectTCP.

Вы уверены, что хотите FTPS? SFTP - это другой, лучший и гораздо более популярный протокол: Twisted содержит реализация SFTP.

Ответ 3

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', '[email protected]')
'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 со встроенной поддержкой SSL (на Python). M2Crypto (или Twisted, если вы хотите пойти этим путем), тем проще.

Ответ 4

Twisted, похоже, имеет некоторую реализацию FTPS (FTP через SSL) под подпроектом conch. Я не искривленный эксперт, но Glyph, сам скрученный человек, указан на этом сайте. Возможно, выполнив его ответ на другой вопрос, вы можете найти более подробную информацию (удачи).

Ответ 5

Что касается реализации сервера, вы можете посмотреть на pyftpdlib: http://code.google.com/p/pyftpdlib/ Он включает демонстрацию script, реализующую рабочий сервер 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

Я сам не пробовал (да, я просто использовал Google и следил за некоторыми ссылками), но http://www.lag.net/paramiko/ кажется рекомендуемое решение. С беглым взглядом это реализация SSH в чистом Python, которая позволяет туннелировать такие вещи, как FTP.

Обновление: комментатор отметил, что я перепутал sftp и ftps, извините. Я по-прежнему предлагаю по крайней мере несколько раз изучить Paramiko, чтобы узнать, соответствует ли это требованиям.

Ответ 7

Я не мог найти бесплатный sftp-клиент для окон, поэтому я закончил обертку Putty PSFTP, используя модуль подпроцесса python. Я, вероятно, использовал бы скрученную реализацию, упомянутую Глифом, если бы я знал об этом.

В любом случае, если вы заинтересованы в этом:

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