Как я могу создать каталог с помощью SCPClient - PullRequest
1 голос
/ 09 мая 2020

Я пытаюсь загрузить файлы на удаленный сервер, используя SCPClient. Это не удается, если целевой каталог не существует

from scp import SCPClient, SCPException
...
with SCPClient(self.client.get_transport()) as scp:
    scp.put(source_path, target_path)

Я изо всех сил пытаюсь найти документацию или примеры, которые помогли бы прояснить это. Есть ли ресурсы, которые могут помочь?

1 Ответ

1 голос
/ 11 мая 2020

Я предполагаю, что вы используете модуль scp для paramiko . Похоже, он не поддерживает работу с каталогами.


Если вам действительно нужно использовать протокол SCP, вы можете попробовать библиотеку scpclient . У него также нет явного способа создания каталога. В конце концов, протокол SCP предназначен не для этого.

Но поскольку ваша задача, похоже, состоит в том, чтобы загрузить каталог - сделайте это, загрузите каталог, а не файлы:

with closing(WriteDir(ssh_client.get_transport(), "/target/dir")) as scp:
    scp.send_dir('/source/dir')

Это приведет к тому, что каталог будет неявно создан (если он еще не существует) как часть загрузки.


Хотя я бы посоветовал вам использовать вместо этого протокол SFTP. Это встроено в Парамико. Так что вам не понадобятся внешние библиотеки. И SFTP поддерживает все, что вам когда-либо понадобится (в отличие от SCP).

См. Загрузить файлы с помощью SFTP в Python, но создавать каталоги, если путь не существует .

...