2017-04-03 160 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