ВОПРОС · Q&A

Нужна помощь с кодом на Python

28 ответов 7,8 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Решение
Функция sftp.put() полагается на полные пути (включая имена файлов), а не только на путь до директории. Поэтому remote_path не должен указывать только путь к папке, а должен указывать полный путь к файлу. Пример: remote_path = '/home/user/mvp/data.txt'.
Спасибо дружище, я уже с этим давно разобрался и тему можно закрыть)
Только что добавил и проверил - так ничего и не вышло(
Попробуйте сразу дать значения, а не записывать их в переменные, попробуйте испльзовать без ковычек или наоборот их добавить. Перепроверьте точно ли работает ssh, есть стабильное подключение, брандмауэр и т.д т.п
 
Вангую не так в путях что-то. Экранируй слеши или попробуй двойные кавычки.
 
Не нужен целый Paramiko для переноса файла.
Для этого используется scp

Типо так:
Python:
import subprocess
subprocess.run(["scp", r"C:\temp\test.txt", f"exited3n@10.0.0.1:2222:/home/exited3n/file.txt"])

Но предварительно должен быть решен вопрос с авторизацией по ключу.
Иначе будет timeout, т.к. сервер будет ждать ввод пароля.
 
Если очень хочется Paramiko то там рекомендую так же использовать scp.
Python:
from paramiko import SSHClient
from scp import SCPClient

ssh = SSHClient()
ssh.load_system_host_keys()
ssh.connect('10.0.0.1:2222')

with SCPClient(ssh.get_transport()) as scp:
    scp.put('test.txt', 'test2.txt')
    scp.get('test2.txt')
 
Если очень хочется Paramiko то там рекомендую так же использовать scp.
Python:
from paramiko import SSHClient
from scp import SCPClient

ssh = SSHClient()
ssh.load_system_host_keys()
ssh.connect('10.0.0.1:2222')

with SCPClient(ssh.get_transport()) as scp:
    scp.put('test.txt', 'test2.txt')
    scp.get('test2.txt')
Спасибо. Когда вернусь домой не знаю, но обязательно попробую. Спасибо)
 
Функция sftp.put() полагается на полные пути (включая имена файлов), а не только на путь до директории. Поэтому remote_path не должен указывать только путь к папке, а должен указывать полный путь к файлу. Пример: remote_path = '/home/user/mvp/data.txt'.
 
Решение
Функция sftp.put() полагается на полные пути (включая имена файлов), а не только на путь до директории. Поэтому remote_path не должен указывать только путь к папке, а должен указывать полный путь к файлу. Пример: remote_path = '/home/user/mvp/data.txt'.
Спасибо дружище, я уже с этим давно разобрался и тему можно закрыть)
 
Последнее редактирование: