Модуль Python, который реализует ftps - PullRequest
10 голосов
/ 16 октября 2008

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

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

спасибо,

Дэвид.

Ответы [ 7 ]

9 голосов
/ 16 октября 2008

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

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

7 голосов
/ 26 декабря 2010

Модуль ftplib в Python версии 2.7.1 обладает всеми необходимыми вам функциями, включая поддержку TLS.

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

4 голосов
/ 19 октября 2008

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 , если вы хотите пойти по этому пути), тем не менее, является более простым решением.

3 голосов
/ 16 октября 2008

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

2 голосов
/ 21 марта 2010

Что касается реализации сервера, вы можете взглянуть на 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

0 голосов
/ 17 октября 2008

Я не смог найти бесплатный sftp-клиент для Windows, поэтому я закончил упаковывать PSFTP Путти с помощью модуля подпроцесса python. Возможно, я бы использовал скрученную реализацию, упомянутую Glyph, если бы знал об этом.

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

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

0 голосов
/ 16 октября 2008

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

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

...