popen return None для удаленной команды ssh с WSGI Apache - PullRequest
0 голосов
/ 11 апреля 2019

Написание небольшого приложения с использованием 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) должен иметь правильный ответ.

...