Я пробую делать другому копию изображений в динамической форме от сервера. Сервер клоун собран в одном Google Platform
из-за которого единственный способ переносить файлы путь ssh
или rsync
или sftp
, он с Вашей соответствующей парой публичных и частных ключей.
Как частный ключ содержит фразу пароля, я использовал следующую команду для того, чтобы он не просил ее у меня снова:
ssh-add ~/.ssh/mi_certificado.pem
И потом чтобы делать перенесение файлов использовало следующее командовало с конечной остановки:
$ rsync -e "ssh -i /home/pi/key.pem" -aq --rsync-path="mkdir -p /ruta/a/crear/ && rsync" /ruta/a/copiar/* usuario@host:/ruta/a/pegar/
До сих пор все добро, функционируй совершенно. Восток script
создай дерево каталога на удаленном сервере и перенеси изображения, которые есть в локальной папке в удаленную только что созданную папку.
Проблема происходит, когда я делаю точно то же самое, но с python
а именно:
import os
os.system('rsync -e "ssh -i /home/pi/key.pem" -aq --rsync-path="mkdir -p /ruta/a/crear/ && rsync" /ruta/a/copiar/ usuario@host:/ruta/a/pegar/')
Заметь: Также я это попробовал с subprocess.call()
И Появляется следующая ошибка:
ssh_askpass: exec(/usr/bin/ssh-askpass): No such file or directory
У меня нет идеи porqué он пробует соглашаться в ssh-askpass
, что не установлен, и я не имею из-за которого это устанавливать.
Обновление еще Один прецедент: Рукописный шрифт Пайтон прокручивает изображение в окне как демон с PM2, если я это скроллирую прямо с конечной остановки с $> sudo mistript.py
функционируй, но он просит у меня вводить фразу пароля в компьютер.
Как предварительное заключение, я думаю, что ни PM2 они не замечают даже Пайтона в инструкцию, что, если он стоит для конечной остановки (ssh-add ~/.ssh/mi_certificado.pem
) так как в обоих случаях они просят у меня пароль частного ключа.
В принципе, я думаю, что проблема зиждится на том, чтобы у процесса ssh
, который бросает rsync
, не было informaciГіn относительно socket , где слушает агент СС, у которого уже есть ключ твоего частного ключа.
Из-за этого, пробует инициализировать ssh-askpass
, который он вероятно не находит, потому что у процесса нет одного $PATH
, который содержал бы /usr/bin
.
В mayorГ - в Linux рабочего стола, когда агент СС инициализирует одну sesiГіn, (обычно ssh-agent
или другой, segГєn среда рабочего стола, как gnome-keyring-daemon
в атмосферах Gnome), что обслуживает просьбы autenticaciГіn используя socket , и этот объявляет посредством изменчивая среду SSH_AUTH_SOCK
.
, Чтобы решать твою проблему, я предлагаю тебе использовать subprocess.call(cmd, env=env)
, где env
должен поселять переменную SSH_AUTH_SOCK
, которые ты можешь брать из os.environ
.
Пример mГЎs сложный* чего-то сходного эта в этом gist .
Надеялся, что он подает тебя!
[1122-]