FTPES - FTP over explicit TLS/SSL in Python

匿名 (未验证) 提交于 2019-12-03 01:29:01

问题:

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 connect to FTP server using tools like FileZilla

Thanks

回答1:

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() 


回答2:

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) 


回答3:

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



回答4:

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



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!