2017-04-03 19 views
0

私のWebサイト(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]) 

私はシェル/バッシュを経由して、それを実行する場合、これは動作します。 呼び出しの手順は次のとおりです。

誰かがボタンを押してWebサイトを開きます。このボタンはDjangoビューを指し、すべてのロジックが配置されているビューセクションでPOSTメソッドまたはGETメソッドを呼び出します。すべての情報(bashスクリプトからの情報を含む)は、Webサイトに出力を表示するテンプレートに渡されます。

このbashスクリプトの出力を、ビューでレンダリングされるhtmlファイルを介して私のウェブサイトに表示します。私は自分で残りの部分を見つけることができるはずですので、今は簡単なプリントで十分でしょう。

答えて

0

述べhereとしてshell=True

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

追加:

(LinuxのようなのPosixシステムの下で)= Trueのパラメータが必要とされていないシェルはbashスクリプトの最初の行がパスである場合シェルに;たとえば、#!/ bin/bashなどです。

+0

すでにありました。それは私が私の質問で説明したものを達成するのに役立つものではありません。それ以外は、すべてのスクリプトは '#!/ bin/bash'で始まります – Permittivity

関連する問題