2008-10-16 25 views
10

Me preguntaba si alguien podría indicarme un módulo ftps gratuito para python.Módulo de Python que implementa ftps

Soy un novato completo de Python, pero esto es algo que necesito para un proyecto de trabajo. Necesito un cliente de ftps para conectarme a un servidor ftps de un tercero.

gracias,

David.

Respuesta

1

No lo he probado yo mismo (sí, acabo de utilizar Google y seguí algunos enlaces), pero http://www.lag.net/paramiko/ parece ser la solución recomendada. Desde una mirada superficial, es una implementación de SSH en Python puro, que permite hacer túneles para cosas como FTP.

Actualización: un comentarista señaló que mezclé sftp y ftps, lo siento. Todavía sugiero al menos investigar a Paramiko brevemente para ver si coincide con los requisitos.

+0

sftp y ftps no son lo mismo. – jfs

3

Twisted parece tener alguna implementación de FTPS (FTP sobre SSL) en el subproyecto conch. No soy un experto retorcido, pero Glyph, twisted hombre mismo, aparece en este sitio. Tal vez al seguir su answer a otra pregunta, puede encontrar más detalles (buena suerte).

+0

Gracias por el enchufe :). Pero FTPS (FTP, pero a través de SSL) no es lo mismo que SFTP (transferencia de archivos a través de SSH, que en realidad no está relacionada con el protocolo FTP). – Glyph

+0

De nada;). Gracias por la respuesta. – gimel

9

Creo que podría usar Twisted para implementar FTPS simplemente usando su implementación FTP, pero cambiando el atributo FTPClient.connectFactory para que sea una función que hace algo con connectSSL en lugar de connectTCP.

¿Estás seguro de que quieres FTPS? SFTP is a different, better, and much more popular protocol en estos días: Twisted contiene an SFTP implementation también.

+1

connectSSL se puede utilizar para la conexión FTPS implícita, pero el FTPS explícito (usando el comando AUTH) es más popular que el FTPS implícito. La implementación de FTP aún torcida es un buen comienzo. Implementar AUTH (y co) junto con la modificación de DTP.connectionMade podría ser el siguiente paso. –

1

No pude encontrar un cliente de sftp gratuito para Windows, así que terminé envolviendo el PSFTP de Putty usando el módulo de subproceso de python. Probablemente hubiera usado la implementación retorcida mencionada por Glyph si lo hubiera sabido.

De todos modos, si su interesado Está disponible en:

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

4

M2Cypto tiene un módulo de FTPS. Desde el 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', '[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.' 
>>> 

Alternativamente, si desea minimizar el uso de módulos de terceros, debe ser capaz de subclase clase ftplib .ftp de la biblioteca estándar con el soporte SSL incorporado (a Python). M2Crypto (o Twisted, si quieres seguir así) es la solución más fácil.