scp с подпроцессом python с закрытым ключом

Как преобразовать эту команду scp для подпроцесса python.

 scp -i /home/ramesh7128/Downloads/<private_key>.pem /home/ramesh7128/Downloads/testing_transfer.py <remote_add>:<remote_file_path>

esp часть, включающая путь к закрытому ключу, - это то, где у меня возникают проблемы.


person DeadDjangoDjoker    schedule 19.09.2016    source источник
comment
В чем проблема? Обычно сообщение об ошибке является индикатором...   -  person l'L'l    schedule 19.09.2016
comment
Есть гораздо лучший способ сделать это с помощью django: stackoverflow.com/a/37087098/267540   -  person e4c5    schedule 19.09.2016


Ответы (1)


Убедитесь, что вы включаете пользователя на удаленном компьютере и правильно отформатировали его:

scp -i /home/ramesh7128/Downloads/<private_key>.pem /home/ramesh7128/Downloads/testing_transfer.py <remote_user>@<remote_add>:<remote_file_path>
scp -i private_key.pem /path/to/the/local/file [email protected]:/path/to/the/remote/file

РЕДАКТИРОВАТЬ: (из комментариев)

subprocess.Popen(["scp", "-i", "path/to/private_key.pem", myfile, destination]) 

Этот синтаксис позволяет Popen узнать об опции -i.

person Derek Janni    schedule 19.09.2016
comment
подпроцесс импорта p = subprocess.Popen([scp, мой файл, пункт назначения]) sts = os.waitpid(p.pid, 0) - person DeadDjangoDjoker; 19.09.2016
comment
Это не было ясно из вашего вопроса - пользовательская часть обычно забывается, когда возникают проблемы с scp. Похоже, вам нужно сделать: subprocess.Popen([scp, -i, path/to/private_key.pem, myfile, destination]), чтобы Popen узнал о закрытом ключе. - person Derek Janni; 19.09.2016
comment
это сработало... большое спасибо. если бы вы могли отредактировать свой ответ на это, я могу выбрать это как ответ. - person DeadDjangoDjoker; 19.09.2016