FTPES-Python中显式TLS/SSL上的FTP

FTPES-Python中显式TLS/SSL上的FTP,python,ftp,tcp,ftpes,Python,Ftp,Tcp,Ftpes,我需要一个python客户机来执行FTPES(显式),是否有人有任何python包的经验可以做到这一点 我无法在python中实现这一点,但可以使用FileZilla之类的工具连接到FTP服务器 谢谢如果您可以使用sftp客户端,它随paramiko提供。。。然而,sftp和ssl上的ftp(ftps)是不同的 import paramiko as pm import socket # sftp client... sock = socket.socket(socket.AF_INET, soc

我需要一个python客户机来执行FTPES(显式),是否有人有任何python包的经验可以做到这一点

我无法在python中实现这一点,但可以使用FileZilla之类的工具连接到FTP服务器


谢谢

如果您可以使用sftp客户端,它随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可能在中可用,尽管我自己还没有尝试过这种机制。。。FTP_TLS方法仅在python 2.7中添加,标准ftplib包含ftpes(ftps显式)连接所需的所有内容。我没有找到简单的方法来建立隐含的联系


请参阅:

本地Python很好地支持FTP-SSL Explicit。设置连接后,可以使用所有标准ftplib命令。详情请浏览:

以下是下载文件的基本示例:

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()
对我来说,这是有效的:(在auth之后登录)。摘自。它们似乎是测试


但是,对于需要在数据通道中重用TLS会话的服务器,需要将FTP_TLS子类化,请参阅此处的解决方法:。如何通过代理使用?非常感谢!我收到了
ftplib.error\u perm:534策略需要SSL
一整天,通过使用
.prot\u p()
切换到安全数据连接来解决。可以通过代理使用吗?
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)