pythonのDjangoとsubprocessモジュールを用いて、シェルスクリプトの実行結果を、Web画面に出力するスクリプトを作成しています。
以下のような、subprocessモジュールでシェルスクリプトを呼び出すスクリプトを作成し、単体ではそれぞれのプログラムが正常に動作することを確認しました。
- test.py
py
1#!/usr/bin/python 2import sys,os 3import subprocess 4import syslog 5 6command_list = ['/bin/sh', '/var/tmp/test.sh'] 7 8proc = subprocess.Popen(args=command_list, 9 stdout=subprocess.PIPE, 10 stderr=subprocess.PIPE, 11 cwd=os.path.dirname(command_list[0]), 12 shell=False) 13 14result = proc.communicate(input=None) 15 16print str( result ) 17
- test.sh
#!/bin/bash echo "begin" cat /var/tmp/data.txt
- data.txt
data1 data2
Django経由でtest.pyを使用したところ、test.shのcatの箇所で、data.txtが存在するのに、
「cat: /var/tmp/data.txt: No such file or directory」
と表示され、エラーになってしまいます。
恐らく、何らかの理由でファイルパスが読み込めていないのだと推測しているのですが、上記のケースで原因と考えられる点がございましたら、ご指摘いただけると幸いです。
※ バージョン
-
python 2.7.13
-
Django 1.11.20
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。