Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python module that implements ftps

Tags:

python

ftps

I was wondering if anybody could point me towards a free ftps module for python.

I am a complete newbie to python, but this is something I need for a work project. I need an ftps client to connect to a 3rd party ftps server.

thanks,

David.

like image 927
David Turner Avatar asked Oct 16 '08 09:10

David Turner


4 Answers

I believe you could use Twisted to implement FTPS by simply using its FTP implementation, but changing the FTPClient.connectFactory attribute to be a function that does something with connectSSL rather than connectTCP.

Are you sure you want FTPS though? SFTP is a different, better, and much more popular protocol these days: Twisted contains an SFTP implementation as well.

like image 124
Glyph Avatar answered Nov 13 '22 09:11

Glyph


The ftplib module in Python version 2.7.1 has all of the functionality you will need, including TLS support.

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

like image 42
bb1 Avatar answered Nov 13 '22 08:11

bb1


M2Cypto has a FTPS module. From the 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', '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.'
>>>

Alternatively, if you wanted to minimise use of third-party modules, you should be able to subclass the standard library's ftplib.FTP class with the built-in (to Python) SSL support. M2Crypto (or Twisted, if you want to go that way) is the easier solution, though.

like image 45
Tony Meyer Avatar answered Nov 13 '22 10:11

Tony Meyer


Twisted seems to have some implementation of FTPS (FTP over SSL) under the conch sub-project. I am no twisted expert, but Glyph, the twisted man himself, is listed in this site. Maybe by following his answer to another question, you can find more details (good luck).

like image 3
gimel Avatar answered Nov 13 '22 10:11

gimel