1

私がやりたいのは、ブラウザーが Raspberry Pi の URL ( http://192.168.10.191:5000/console ) にアクセスしようとすると、フロントエンドで python を入力する必要なく、LED がオンになりますが、意図したとおりに機能させるには、Web コンソールで python と入力する必要があります。

コードは次のとおりです。

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

@app.route('/user')
def here():
    return '<h1>user here</h>'

@app.route('/console')
def console():
    import pexpect
    child = pexpect.spawn('python')
    child.expect('\n>>>')
    child.sendline('import os')
    child.sendline('os.system("cd /sys/class/leds/led0 && sudo sh -c \'echo 1 > brightness\' ")')
    child.expect('\n>>>')

if __name__ == '__main__':
    app.run(host='0.0.0.0', debug=True)
4

1 に答える 1

1

/consoleURLを使用する理由はありますか? 別のものを使用すると、この問題は発生しません。

デフォルトでは、Werkzeug によってデバッグ用に使用されます。

設定してオフにする必要がありますuse_evalex=False。詳細については、この質問を参照してください。

また、使用する必要はありませんpexpect。に直接電話をかけるos.system:

@app.route('/console')
def console():
    import os
    os.system("cd /sys/class/leds/led0 && sudo sh -c \'echo 1 > brightness\' ")

    return '<h1>changed brightness</h>'

if __name__ == '__main__':
    app.run(host='0.0.0.0', debug=True, use_evalex=False)
于 2015-04-09T10:09:39.803 に答える