FTPES - FTP over explicit TLS / SSL in Python

I need a python client to execute FTPES (explicit), someone has experience with any python package that can do this.

I cannot do this in python, but I can connect to an FTP server using tools like FileZilla

thanks

+8
source share
4 answers

FTP-SSL Explicit is well supported by native Python. After setting up the connection, you can use all standard ftplib commands. More information can be found at: http://docs.python.org/2/library/ftplib.html#ftplib.FTP_TLS

Here is a basic example for downloading a file:

from ftplib import FTP_TLS ftps = FTP_TLS('ftp.MySite.com') ftps.login('testuser', 'testpass') # login anonymously before securing control channel ftps.prot_p() # switch to secure data connection.. IMPORTANT! Otherwise, only the user and password is encrypted and not all the file data. ftps.retrlines('LIST') filename = 'remote_filename.bin' print 'Opening local file ' + filename myfile = open(filename, 'wb') ftps.retrbinary('RETR %s' % filename, myfile.write) ftps.close() 
+11
source

For me it worked: (login after auth). Taken from Nullege . They seem to be tests for ftplib .

 self.client = ftplib.FTP_TLS(timeout=10) self.client.connect(self.server.host, self.server.port) # enable TLS self.client.auth() self.client.prot_p() self.client.login(user,pass) 
+3
source

If you can use the sftp client, it is provided with paramiko ... however sftp and ftp over ssl (ftps) are different ...

 import paramiko as pm import socket # sftp client... sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(20) sock.connect((hostname, port)) trans = pm.Transport(sock) trans.connect(hostkey=None ,username=username, password=password, pkey=None) chan = trans.open_session() chan.get_pty() chan.invoke_shell() sftp = pm.SFTP.from_transport(trans) 

My googling indicates that ftp over ssl may be available in ftplib , although I have not tried this mechanism myself ... FTP_TLS method was added only in python 2.7

0
source

The standard ftplib contains everything you need to connect ftpes (explicit ftps). I did not find an easy way to make implicit joins.

See: http://docs.python.org/2/library/ftplib.html#ftplib.FTP_TLS

0
source

All Articles