У меня есть скрипт python (назовем его script1.py), который использует модуль exe cnet для удаленного запуска другого скрипта (script2.py) на другом компьютере. Важная часть этого выглядит примерно так:
import script2
host = "name@ip"
gw = execnet.makegateway("ssh={}".format(host))
channel = gw.remote_exec(script2)
Не имеет значения, что он делает, потому что, когда я запускаю его в терминале, он работает отлично. Сейчас я пытаюсь запустить его через Flask API. Я использую модуль подпроцесса для запуска нового процесса со скриптом (прекрасно работает с любым другим скриптом, который не требует подключения к другой машине). По сути, это должно работать так:
отправка запроса на запуск скрипта -> создание подпроцесса с помощью script1.py -> внутри script1.py, импортирование script2 и запуск его на другой машине с использованием exe cnet
Когда я делаю это, я получаю сообщение об ошибке:
ssh_askpass: exec(/usr/bin/ssh-askpass): No such file or directory
Permission denied, please try again.
ssh_askpass: exec(/usr/bin/ssh-askpass): No such file or directory
Permission denied, please try again.
ssh_askpass: exec(/usr/bin/ssh-askpass): No such file or directory
Permission denied (publickey,password).
Traceback (most recent call last): File "/home/ubuntu/script1.py", line 23, in <module>
gw = execnet.makegateway("ssh={}".format(host)) File "/usr/local/lib/python2.7/dist-packages/execnet/multi.py",
line 128, in makegateway gw = gateway_bootstrap.bootstrap(io, spec)
File "/usr/local/lib/python2.7/dist-packages/execnet/gateway_bootstrap.py",
line 98, in bootstrap bootstrap_exec(io, spec) File "/usr/local/lib/python2.7/dist-packages/execnet/gateway_bootstrap.py",
line 50, in bootstrap_exec raise HostNotFound(io.remoteaddress) execnet.gateway_bootstrap.HostNotFound: remote@10.10.1.2
Странно, что я могу сделать это в linux терминале, но не запуская его как подпроцесс с API. У кого-нибудь есть идеи, почему он не работает?