通过Django Web App执行Bash脚本
问题描述:
我想从我的网站(用Python和Django编写)调用bash脚本。 我听说了很多关于子进程的知识,但没有得到它的工作。通过Django Web App执行Bash脚本
这里是我试图做的:
import os
import subprocess
s1 = 'Hello'
s2 = 'Bye'
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
path = os.path.join(BASE_DIR, 'subfolder', 'sub_subfolder')
script = path + '/test.sh'
output = subprocess.call([script, s1, s2])
,如果我通过shell /猛砸执行它的工作原理。 通话过程如下:
有人按下按钮的网站。该按钮指向一个Django视图,然后在所有逻辑所在的视图部分中调用POST或GET方法。然后将所有信息(包括来自bash脚本的信息)交给在网站上显示输出的模板。
我想通过一个html文件在我的网站上显示这个bash脚本的输出,这个html文件将在视图中呈现。一个简单的打印就足够了,因为我应该能够自己弄清楚剩下的部分。
答
添加shell=True
output = subprocess.call([script , s1 , s2] , shell = True)
如上所述here:
壳不需要= True参数(一个Posix的系统如Linux下),如果bash脚本的第一行是一个路径一个壳;例如#!/ bin/bash。
已经做到了。这对我在我的问题中描述的内容没有帮助。除此之外,每个脚本都以'#!/ bin/bash'开头 – Permittivity