Сообщить об ошибке.

Класс FTP_TLS() модуля ftplib в Python

Клиент FTP с использованием SSL и TLS

Синтаксис:

import ftplib

ftps = ftplib.FTP_TLS(host='', user='', passwd='', acct='', keyfile=None, 
                      certfile=None, context=None, timeout=None, 
                      source_address=None, *, encoding='utf-8')

Параметры:

  • host='' - хост FTP-сервера,
  • user='' - имя пользователя для доступа на FTP-сервер,
  • passwd='' - пароль пользователя для доступа на FTP-сервер,
  • acct='' - информация об аккаунте,
  • keyfile=None - ключ сертификата безопасности (устаревшая альтернатива context),
  • certfile=None - сертификата безопасности (устаревшая альтернатива context),
  • context=None - объект ssl.SSLContext,
  • timeout=None - тайм-аут в секундах для попытки подключения к FTP,
  • source_address=None - привязывает сокет к исходному адресу,
  • encoding='utf-8' - кодировка FTP-сервера.

Возвращаемое значение:

Описание:

Класс ftplib.FTP_TLS() модуля ftplib представляет собой подкласс ftplib.FTP(), который добавляет поддержку TLS к FTP, как описано в RFC 4217.

Класс ftplib.FTP_TLS() подключается, как обычно, к порту 21, неявно защищая управляющее соединение FTP-сервера перед аутентификацией. Для защиты подключения к данным пользователь должен явно запросить его, вызвав метод FTP_TLS.prot_p().

Аргумент context - это объект ssl.SSLContext, который позволяет объединять параметры конфигурации SSL, сертификаты и закрытые ключи в единую (потенциально долгоживущую) структуру.

Аргументы keyfile и certfile - это устаревшая альтернатива context - они могут указывать на закрытый ключ в формате PEM и файлы цепочки сертификатов (соответственно) для соединения SSL.

Изменено в Python 3.9: если аргумент timeout=0, то он вызовет ошибку ValueError, чтобы предотвратить создание неблокирующего сокета. Был добавлен параметр encoding, а значение по умолчанию было изменено с Latin-1 на UTF-8 в соответствии с RFC 2640.

Пример сеанса с использованием класса ftplib.FTP_TLS():

>>> from ftplib import FTP_TLS
>>> ftps = FTP_TLS('ftp.pureftpd.org')
>>> ftps.login()
# '230 Anonymous user logged in'
>>> ftps.prot_p()
# '200 Data protection level set to "private"'
>>> ftps.nlst()
# ['.', '..', '6jack', 'OpenBSD', 'blogbench', 'bsdcam', 'libpuzzle', 
# 'minidentd', 'mysql-udf-global-user-variables', 'php-jenkins-hash', 
# 'php-skein-hash', 'php-webdav', 'phpbench', 'pincaster', 'ping', 
# 'posto', 'pub', 'public', 'qscan', 'qtc', 'sharedance', 'skycache', 
# 'ucarp', 'antilink', 'clockspeed', 'djbdns-jedi', 'docs', 
# 'eaccelerator-jedi', 'francotone', 'fugu', 'ignore', 'metalog', 
# 'misc', 'phpaudit', 'piknik', 'public_keys', 'pure-ftpd', 'sound', 
# 'tmp', 'favicon.ico']
>>> ftps.quit()
# '221-Goodbye. You uploaded 0 and downloaded 0 kbytes.\n221 Logout.'

Методы объект FTP_TLS.

Класс ftplib.FTP_TLS() наследуется от ftplib.FTP(), следовательно наследует все методы определяемые классом ftplib.FTP().

Класс ftplib.FTP_TLS() определяет следующие дополнительные методы:


FTP_TLS.ssl_version:

Атрибут FTP_TLS.ssl_version устанавливает используемую версию SSL (по умолчанию ssl.PROTOCOL_SSLv23).

FTP_TLS.auth():

Метод FTP_TLS.auth() настраивает безопасное управляющее соединение с помощью TLS или SSL, в зависимости от того, что указано в атрибуте FTP_TLS.ssl_version.

FTP_TLS.ccc():

Метод FTP_TLS.ccc() возвращает канал управления обратно в открытый текст.

Такое поведение может быть полезно, чтобы воспользоваться преимуществами брандмауэров, которые знают, как обрабатывать NAT с незащищенным FTP без открытия фиксированных портов.

FTP_TLS.prot_p():

Метод FTP_TLS.prot_p() настраивает безопасное соединение для передачи данных.

FTP_TLS.prot_c():

Метод FTP_TLS.prot_c() настраивает подключение для передачи данных в виде открытого текста.