Python flask 执行本地脚本

16 min read

目录结构

.
├── index.py
├── some.sh
└── test
    └── 1.txt
import subprocess
from subprocess import Popen, PIPE
from subprocess import check_output
from flask import Flask
from flask import send_from_directory
def get_shell_script_output_using_communicate():
    session = Popen(['./some.sh'], stdout=PIPE, stderr=PIPE)
    stdout, stderr = session.communicate()
    if stderr:
        raise Exception("Error "+str(stderr))
    return stdout.decode('utf-8')

def get_shell_script_output_using_check_output():
    stdout = check_output(['./some.sh']).decode('utf-8')
    return stdout

app = Flask(__name__)

@app.route('/',methods=['GET',])
def home():
    return '<pre>'+get_shell_script_output_using_check_output()+'</pre>'

@app.route('/test/<path:path>')
def send_static(path):
    return send_from_directory('test',path)

app.run(debug=True)
//some.sh

#!/bin/sh

echo "hi from shell script"
echo "hello from shell script"