Доступ к SFTP-серверу с помощью PySftp в Python

SFTP известен как протокол передачи файлов SSH, а также как безопасный протокол передачи файлов. SFTP — это сетевой протокол, обеспечивающий доступ к файлам, их передачу и управление файлами через любой надежный поток данных.

В данном руководстве рассмотрим, как получить доступ к SFTP-серверу с помощью PySftp в Python.

FTP-сервер Python

Модуль Python pysftp — это простой интерфейс для SFTP. Он предлагает высокоуровневые абстракции и подпрограммы на основе задач для удовлетворения потребностей SFTP. Однако протокол SFTP не поддерживает аутентификацию и безопасность; он ожидает, что базовый протокол защитит его. В результате SFTP наиболее широко используется в качестве подсистемы реализации протокола SSH версии 2, разработанной той же рабочей группой.

Давайте установим модуль sftp pysftp.

Установка pysftp

В зависимости от вашей версии Python и pip он будет установлен в вашей системе.

Если вы не знаете, как обновить pip, ознакомьтесь с руководством по обновлению pip.

Получение доступа к SFTP-серверу с помощью PySftp

Вы можете просмотреть содержимое каталога, используя pysftp в Python. Для этого вам нужно ваше имя хоста, имя пользователя и пароль.

Затем вам нужно переключиться из каталога с помощью метода cwd или chdir и указать удаленный каталог в качестве первого аргумента.

Конечно, это фиктивный сервер, которого не существует. Тем не менее, в реальной жизни вы должны использовать переменные среды для получения фактических учетных данных в любом файле по соображениям безопасности и не помещать все учетные данные в отдельные файлы. Всегда помещайте в файл переменных среды. Например, файл .env.

Теперь давайте посмотрим, что происходит. Приведенный выше код одинаков и для вас, вы должны ввести свои учетные данные, и код будет работать для вас.

Сначала мы импортировали модуль pysftp, а затем предоставили мое имя хоста, имя пользователя и пароль.

Затем мы использовали оператор Python with, чтобы открыть безопасное соединение с удаленным сервером, указав имя хоста, имя пользователя и пароль. В случае успеха мы переключим удаленный каталог, чтобы получить список и распечатать один за другим в консоли.

Список в произвольном порядке. Он не включает уникальные записи ‘.’ и ‘..’. Каждый возвращаемый объект SFTPAttributes будет иметь дополнительное поле: длинное имя, которое может содержать отформатированную строку атрибутов файла в формате UNIX. Содержимое строки будет зависеть от SFTP-сервера.

Как загрузить файл

Чтобы загрузить файл на удаленный сервер через SFTP с помощью pysftp, вам необходимо использовать метод sftp.put() клиента SFTP. Метод put принимает в качестве первого аргумента относительный или абсолютный локальный путь к файлу, который вы хотите загрузить, а в качестве второго аргумента — удаленный путь, по которому файл должен быть загружен.

Сначала мы установили безопасное соединение в этом коде, а затем определили два пути к файлам:

  1. localFilePath: это путь к локальному файлу.
  2. remoteFilePath: это путь к удаленному файлу.

Затем мы использовали метод sftp.put() для загрузки файла на сервер.

Как скачать удаленные файлы с помощью pysftp

В предыдущем разделе мы видели, как загрузить файл. Теперь давайте посмотрим, как скачать файл.

Чтобы загрузить удаленный файл с сервера с помощью pysftp, мы должны открыть соединение и из экземпляра sftp и использовать метод get, который ожидает путь к удаленному файлу, который будет загружен, и второй аргумент как локальный путь, где файл должен быть сохранен.

Мы определили соединение в приведенном выше коде, а затем определили два пути к файлам.

  1. remoteFilePath: это путь, по которому находится файл.
  2. localFilePath: это путь, по которому будет загружен файл.

На следующем шаге мы использовали метод get() для загрузки файла.

Как удалить файл с помощью pysftp

Вы можете удалить файл с помощью pysftp, используя метод sftp.remove(). Метод remove() ожидает абсолютный путь к удаленному файлу в качестве первого аргумента.

В этом коде мы открыли соединение, а затем определили переменную removeFilePath, которая содержит путь к файлу, который необходимо удалить.

Затем мы использовали метод sftp.remove() для удаления файла с удаленного сервера.

Модуль PySftp имеет широкий спектр методов, которые вы можете использовать для выполнения различных действий, таких как обработка разрешений и т. д., поэтому не забудьте проверить официальный веб-сайт документации здесь.

Оцените статью

Автор статей и разработчик, делюсь знаниями.

Программирование на Python