我正在尝试在我的Flask Web应用程序中运行python脚本。基本上,用户可以单击一个按钮,该脚本应在托管我的flask python Web应用程序的服务器上运行。我将其托管在Windows Server 2016和IIS上(我知道,我应该考虑使用linux)
当用户单击按钮时,服务器将使用以下配置的os.system函数执行以下脚本。
def run_python_script(script_path_and_arguments):
try:
command = 'python {}'.format(script_path_and_arguments)
system(command)
return True, 'Success'
except Exception as e:
logger.error('Failed to run script, exception: {}'.format(e))
return False, 'Unknown Error'
当我在工作站上本地运行脚本时,它执行正常。 当我从服务器上从命令行运行脚本时,它运行正常, 当我尝试通过网站运行它时,单击该按钮将失败。
在我看来,它在IIS下运行时一定是一些漏洞/安全性问题。您是否知道我应该在哪里解决?
在服务器上,python.exe位于c:\ Anaconda3 \
编辑:我现在试图通过使用子进程模块运行脚本来捕获输出:它给出了一个明显的异常“命令'python ...'返回了非零退出状态1”
def run_python_script(tscript_path_and_arguments):
try:
command = 'python {}'.format(script_path_and_arguments)
output_bytes = subprocess.check_output(command, stderr=subprocess.STDOUT)
output = output_bytes.decode('utf-8')
lines = output.split('\n')
for line in lines:
logger.info(msg='Script output = {}'.format(line))
return True, 'Success'
except Exception as e:
logger.error('Failed to run script, exception: {}'.format(e))
return False, 'Unknown Error'