26

我需要一个 python 客户端来执行 FTPES(显式),是否有人对任何可以执行此操作的 python 包有经验。

我无法在 python 中执行此操作,但可以使用 FileZilla 等工具连接到 FTP 服务器

谢谢

4

4 回答 4

29

本机 Python 很好地支持 FTP-SSL Explicit。建立连接后,您可以使用所有标准的 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()
于 2013-08-26T01:59:01.637 回答
13

对我来说,这很有效:(身份验证后登录)。取自Nullege。它们似乎是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)
于 2013-11-05T11:58:31.280 回答
1

标准 ftplib 确实包含 ftpes(ftps 显式)连接所需的一切。我没有找到简单的方法来建立隐式连接。

请参阅:http ://docs.python.org/2/library/ftplib.html#ftplib.FTP_TLS

于 2012-11-15T16:33:56.780 回答
0

如果您可以使用 sftp 客户端,它提供了 paramiko... 但是,sftp 和 ftp over ssl (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)

我的谷歌搜索表明 ftp over ssl 可能在ftplib中可用,尽管我自己没有尝试过这种机制...... FTP_TLS 方法仅在 python 2.7 中添加

于 2011-04-04T06:51:11.447 回答