FTPES - FTP через явный TLS / SSL в Python - PullRequest
15 голосов
/ 04 апреля 2011

Мне нужен клиент Python для выполнения FTPES (явный), есть ли у кого-нибудь опыт работы с любым пакетом Python, который может это сделать.

Я не могу сделать это в Python, но могу подключиться к FTP-серверу с помощью таких инструментов, как FileZilla

Спасибо

Ответы [ 4 ]

16 голосов
/ 26 августа 2013

FTP-SSL Explicit хорошо поддерживается собственным 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()
6 голосов
/ 05 ноября 2013

Для меня это сработало: (логин после авторизации). Взято из 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)
0 голосов
/ 15 ноября 2012

Стандартный ftplib содержит все, что вам нужно для соединения ftpes (ftps явное).Я не нашел простой способ создания неявных соединений.

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

0 голосов
/ 04 апреля 2011

Если вы можете использовать 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)

Мой поиск в Google указывает, что ftp over ssl может быть доступен в ftplib , хотя я сам не пробовал этот механизм ... Метод FTP_TLS был добавлен только в python 2.7

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...