2017-04-03 163 views
0

我想从我的网站(用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文件将在视图中呈现。一个简单的打印就足够了,因为我应该能够自己弄清楚剩下的部分。

回答

0

添加shell=True

output = subprocess.call([script , s1 , s2] , shell = True) 

如上所述here

壳不需要= True参数(一个Posix的系统如Linux下),如果bash脚本的第一行是一个路径一个壳;例如#!/ bin/bash。

+0

已经做到了。这对我在我的问题中描述的内容没有帮助。除此之外,每个脚本都以'#!/ bin/bash'开头 – Permittivity