我想要做的是在浏览器尝试访问我的Raspberry Pi URL(http://192.168.10.191:5000/console)LED将打开,而无需在前端键入任何python,但此刻,我仍需要在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)
答案 0 :(得分:1)
您是否有理由使用/console
网址?如果你使用另一个,你就不会遇到这个问题。
Werkzeug默认使用它进行调试。
您需要通过设置use_evalex=False
来关闭它。有关详细信息,请参阅this question。
此外,您不需要使用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)