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

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

Python sftp

Модуль

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

Установить pysftp

 pip install pysftp # или  python3 -m pip install pysftp 

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

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

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

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

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

 import pysftpmyHostname = "newblog.com" myUsername  = "root" myPassword = "root" с pysftp.Connection (host = myHostname, username = myUsername, password = myPassword) as sftp: print ("Соединение успешно установлено ...") # Переключиться на удаленный каталог sftp.cwd (  '/var/www/vhosts/') # Получить структуру удаленного каталога '/var/www/vhosts' directory_structure = sftp.listdir_attr () # Распечатать данные для attr в структуре_каталога: print (attr.filename, attr) # connection  закрывается автоматически в конце оператора with 

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

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

Во-первых, мы импортировали pysftp , а затем предоставил мое имя хоста , myUsername и myPassword .

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

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

Как загрузить файл с помощью pysftp в Python

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

 import pysftpmyHostname =  "newblog.com" myUsername = "root" myPassword = "root" с pysftp.Connection (host = myHostname, username = myUsername, password = myPassword) as sftp: print ("Соединение успешно установлено ...") # Определить файл  который вы хотите загрузить из своего локального каталога # или абсолютного "/Users/krunal/Desktop/code/pyt/app.txt" localFilePath = './app.txt' # Определите удаленный путь, по которому файл будет загружен remoteFilePath =  '/var/backups/app.txt' # Использовать метод put для загрузки файла sftp.put (localFilePath, remoteFilePath) # соединение закрывается автоматически в конце оператора with 

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

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

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

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

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

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

 import pysftpmyHostname = "newblog.com" myUsername = "root" myPassword = "root"  с помощью pysftp.Connection (host = myHostname, username = myUsername, password = myPassword) as sftp: print ("Соединение успешно установлено ...") # Определите путь удаленного пути к файлу remoteFilePath = '/var/backups/app.txt'  # Определите каталог, в котором вы должны сохранить файл.  # или абсолютный "/Users/krunal/Desktop/code/pyt/app.txt" localFilePath = './app.txt' # Используйте метод get для загрузки файла sftp. get (remoteFilePath, localFilePath) # соединение закрывается автоматически в конце оператора with 

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

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

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

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

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

 import pysftpmyHostname = "newblog.com" myUsername = "root" myPassword = "root" с pysftp.Connection (  host = myHostname, username = myUsername, password = myPassword) as sftp: print ("Соединение успешно установлено ...") # Определите путь удаленного пути к файлу removeFilePath = '/var/backups/app.txt' sftp.remove (removeFilePath  ) # соединение закрывается автоматически в конце оператора with 

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

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

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

Наконец, учебник Python sftp i s над.

См. также

Как открыть файл в Python

Как читать файл в Python

Как написать файл в Python

Как скопировать файл в Python

Как импортировать файл на Python

Оцените статью
nanomode.ru
Добавить комментарий