Удаленный SFTP не генерируется

#python #sftp #snakemake #pysftp

#python #sftp #snakemake #pysftp

Вопрос:

Я могу сделать

 sftp server.com <<< """put bar.txt bar.txt"""
  

используя мою конфигурацию ~/.shh/config , и я пытаюсь включить то же самое в свой Snakefile . Следуя документам, мне удается подключиться, но не передавать файл:

 from snakemake.remote.SFTP import RemoteProvider
SFTP = RemoteProvider(mkdir_remote=True, username='my.email@something.com', private_key='~/.ssh/id_rsa')

rule all:
    input:
        "bar.txt"
    output:
        SFTP.remote('server.com/bar.txt')
    shell:
        "cp {input} {output}"
  

не передает файл. Я что-то упустил? Как выполняется команда sftp сверху с использованием pysftp?

Заранее спасибо!

Комментарии:

1. Ваша команда оболочки говорит cd вместо cp .

2. да, извините. Эта ошибка, должно быть, произошла, когда я заменил пример общими именами… Я изменил его, спасибо, что заметили. Работает ли этот код для вас с сервером, к которому у вас есть доступ ?!

3. Получаете ли вы вообще какой-либо вывод, например, сообщение об ошибке? Если да, пожалуйста, укажите это в своем вопросе.

4. Как первые две строки кода соотносятся с остальной частью текста в вашем разделе кода?

5. Я только что заметил: «Как выполняется команда sftp сверху с использованием pysftp?» Таким образом, у вас нет проблем с вашим кодом. Скорее, вы просите нас закодировать это для вас. Здесь это работает не так. Напишите что-нибудь, что, по вашему мнению, должно работать, а затем предоставьте свой код и задайте вопросы о том, почему он не работает. Если вы еще не знаете, как писать код, найдите учебные пособия или книги, чтобы узнать, что вам нужно знать. Мы здесь не учим программированию.

Ответ №1:

итак, просто для подтверждения: вышеуказанное должно работать так, как написано. Я столкнулся с таймаутом, поскольку SFTP использует параллельные pysftp / paramiko соединения, которые ограничены в моей инфраструктуре.

(Пробный запуск snakemake также пытается получить доступ к файлам на ftp-сервере, а затем я был заблокирован на 5 минут, так как я открыл слишком много подключений)