Как запустить консольную команду Ubuntu внутри Flask?

Написал тестовую функцию просмотра каталога:

def comand_ls_a():
    MyOut = subprocess.Popen(['/home/APP_USER/APP_FOLDER', 'ls', '-a', '.'],
                             stdout=subprocess.PIPE,
                             stderr=subprocess.STDOUT)
    stdout, stderr = MyOut.communicate()
    print(stdout)
    print(stderr)

    return 'REZULT:\n' + stdout + stderr

Вызвал ее в роутинге:

    @MY_APP.route('/test_func', methods=['POST'])
    def test_func():
        return jsonify({'data': newd_dir_and_txt()})

В постмане ответ:

<!doctype html>
<html lang=en>
<title>500 Internal Server Error</title>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error and was unable to complete your request. Either the server is overloaded or
    there is an error in the application.</p>

На самом сервере ошибка:

PermissionError: [Errno 13] Permission denied: '/home/APP_USER/APP_FOLDER'

Да. понимаю, что в доступе отказано. Но как разрешить доступ? Или как-то по другому надо это делать?

ДОПОЛНЕНИЕ для ganz:

Если сделать так:

import os
def comand_ls_a():
    result = os.system('com > out.txgt')
    return 'REZULT:\n' + str(result)

то выводит:

{
    "data": "REZULT:\n32512"
}

ДОПОЛНЕНИЕ #2: Покапался еще в инете и такое сделал:

def comand_ls_a():
    proc1 = subprocess.run('ls -a', stdout=subprocess.PIPE,
                          stderr=subprocess.STDOUT, shell=True, encoding='utf-8',
                            cwd=os.path.dirname(os.path.realpath(__file__)),)

    proc2 = subprocess.run('id', stdout=subprocess.PIPE,
                           stderr=subprocess.STDOUT, shell=True,
                           cwd=os.path.dirname(os.path.realpath(__file__)),
                           encoding='utf-8')
    return {
        'ls -a': proc1.stdout,
        'id': proc2.stdout,
        'inf': os.path.dirname(os.path.realpath(__file__))
    }


Выводит:

{
    "data": {
        "id": "/bin/sh: 1: id: not found\n",
        "inf": "/home/USER_FOLDER/APP_FOLDER/py_library",
        "ls -a": "/bin/sh: 1: ls: not found\n"
    }
}

Причем как то странно выводит. Выводит с предыдущим результатом субпроцесса...


Ответы (0 шт):