Модуль Python, который реализует ftps
Мне было интересно, может ли кто-нибудь указать мне на бесплатный ftps-модуль для python.
Я полный новичок на python, но это то, что мне нужно для рабочего проекта. Мне нужен ftps-клиент для подключения к FTP-серверу сторонних производителей.
спасибо,
Дэвид.
Ответы
Ответ 1
Я считаю, что вы можете использовать Twisted для реализации FTPS, просто используя его реализацию FTP, но изменяя атрибут FTPClient.connectFactory
, чтобы быть функцией, которая делает что-то с connectSSL
, а не connectTCP
.
Вы уверены, что хотите FTPS? SFTP - это другой, лучший и гораздо более популярный протокол: Twisted содержит реализация SFTP.
Ответ 2
Модуль ftplib в Python версии 2.7.1 обладает всеми необходимыми функциями, включая поддержку TLS.
http://docs.python.org/library/ftplib.html#module-ftplib
Ответ 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/