FTPES - FTP over explicit TLS/SSL in Python

后端 未结 4 589
一个人的身影
一个人的身影 2020-12-03 01:54

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

I am not able to do this in python, but can conne

相关标签:
4条回答
  • 2020-12-03 02:01

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

    Here's 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()
    
    0 讨论(0)
  • 2020-12-03 02:15

    If you can use an 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 might be available in ftplib, although I haven't tried this mechanism myself... the FTP_TLS method was only added in python 2.7

    0 讨论(0)
  • 2020-12-03 02:21

    For me this 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)
    
    0 讨论(0)
  • 2020-12-03 02:27

    Standard ftplib does contain everything you need for ftpes (ftps explicit) connection. I didn't find easy way to make implicit connections.

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

    0 讨论(0)
提交回复
热议问题