FTPES - 通过Python中的显式TLS/SSL的FTP
问题描述:
我需要一个python客户端来做FTPES(显式的),有没有人有任何可以做到这一点的python包的经验。FTPES - 通过Python中的显式TLS/SSL的FTP
我不能做到这一点在Python中,但可以使用工具,如FileZilla中
感谢
答
如果可以使用SFTP客户端连接到FTP服务器,它具备的paramiko ...但是,SFTP和基于SSL的FTP(FTPS)是不同的...
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)
我的谷歌搜索表明,基于SSL的FTP可能在ftplib是可用的,虽然我还没有尝试过这种机制自己...的FTP_TLS方法只添加在python 2.7
答
标准ftplib确实包含了您需要的所有ftps(ftps显式)连接。我没有找到简单的方法来建立隐式连接。
参见:http://docs.python.org/2/library/ftplib.html#ftplib.FTP_TLS
答
FTP-SSL明确深受原生的Python的支持。建立连接后,您可以使用所有标准的ftplib命令。更可以在这里找到: http://docs.python.org/2/library/ftplib.html#ftplib.FTP_TLS
下面是下载文件的基本示例:
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()