【发布时间】:2019-04-22 04:30:47
【问题描述】:
我已经创建并部署了一个带有 Apache2 服务器 WSGI 的 Flask 应用程序,现在想从该应用程序运行一个 .sh 脚本。但是,从 python 代码调用,它不会执行。
这里是 test.sh:
#!/bin/bash
echo "hi from shell script"
这是我的 python 烧瓶应用程序代码 index.py(在打开应用程序时运行)但没有打印或执行:
import subprocess
subprocess.call('/var/www/FlaskApp/FlaskApp/scripts/test.sh')
为了检查我的代码中没有错误,我检查了烧瓶错误日志,没有错误。另外,我创建了一个名为 test_shell_script.py 的脚本,其 python 代码与上面相同(但不是烧瓶应用程序代码),它运行得很好:
# test_shell_script.py
import subprocess
subprocess.call('/var/www/FlaskApp/FlaskApp/scripts/test.sh')
然后用python运行它: python3 /var/www/FlaskApp/FlaskApp/test_shell_script.py
hi from shell script
我也更改了权限:
-rwxr-xr-x 1 root root 364 Nov 19 17:48 ../scripts/test.sh
我在这里遗漏了什么不允许我的 Flask 应用程序从 python 代码运行 shell 命令?
【问题讨论】:
-
你得到什么样的错误?这看起来很相似:stackoverflow.com/questions/4256107/…,你可以试试
subprocess.Popen的建议吗? -
接收没有错误。我试过 subprocess.Popen 甚至 os.system
-
您授予文件
run_sql.sh的root权限,但您尝试运行的文件名是test.sh -
@Seraf - 抱歉打错了,现在改正
-
奇怪,运行 Flask 应用程序的用户是 root? (可能是,但仍在询问)