Написание небольшого приложения с использованием Flask, которое принимает данные с помощью формы Flask-WTF. Входные данные должны быть переданы команде ssh, которая выполняется на удаленном сервере.
Это прекрасно работает, когда я запускаю это как файл Python. app.run(debug=True, host='0.0.0.0')
.
Когда запрос приходит с сервера Apache, оба значения (comm_res, comm_err)
возвращаются пустыми или None
.
Установить разрешение /tmp/id_rsa
на 777
, без разницы.
Взял захват пакета во время выполнения этой функции, команда SSH запускает, и соединение SSH происходит, и клиентский компьютер закрывает соединение с FIN. не выводит вывод данных кавычек cd /home/userA/test/test ; python3 sc_test.py 1 1; exit ; bash
В переменной comm, если я даю какую-то локальную команду (ls -l
, cd /home
и т. Д.). тогда запрос сервера Apache выполняется и ответ возвращается на веб-страницу.
Проблема возникает при использовании команды ssh в переменной comm.
from subprocess import Popen
from subprocess import PIPE
def run_remote_script():
comm = '''ssh -t -o LogLevel=QUIET -i /tmp/id_rsa -l username 10.x.x.x "cd /home/userA/test/test ; ls -l; exit ; bash" '''
comm_exe = Popen([comm], stdout=PIPE, shell=True)
(comm_res, comm_err) = comm_exe.communicate()
return (comm_res.decode('utf-8'))
(comm_res, comm_err)
должен иметь правильный ответ.