django ビューからスクリプトを実行する方法を知りたいです。
コマンドラインから動作します: 例:$ python sync.py
ただし、django ビュー経由では動作しません。前もって感謝します
スクリプト 1: /home/ubuntu/webapps/sony_mv/sync.py
#!/usr/bin/env python
from subprocess import call
call(["/bin/sh", "/home/ubuntu/webapps/sony_mv/sync.sh"])
スクリプト 2: /home/ubuntu/webapps/sony_mv/sync.sh
cd /home/ubuntu/webapps/sony_mv
heroku pgbackups:capture -a staging-db --expire
heroku pgbackups:capture -a prod-db --expire
heroku pgbackups:restore DATABASE -a prod-db `heroku pgbackups:url -a staging-d` --confirm prod-db
ビュー.py
def sync_staging_to_production(request):
try:
token = request.GET['token']
except:
token = False
if token == '382749813256-231952135':
from subprocess import *
import sys
p = Popen([sys.executable, '/home/ubuntu/webapps/sony_mv/sync.py'],stdout=PIPE,stderr=STDOUT)
return render_to_response('hannibal/sync_staging_to_production.html',{'feedback':'Success. Sync in progress.'},context_instance=RequestContext(request))
else:
return render_to_response('hannibal/sync_staging_to_production.html',{'feedback':'Authorization required'},context_instance=RequestContext(request))
ls出力
$ ls -l sync.*
-rwxrwxr-x 1 root 108 2013-04-09 16:35 sync.py
-rwxrwxr-x 1 root 326 2013-04-09 16:44 sync.sh
whoami出力
$ python
>>> from subprocess import call
>>> call(["/usr/bin/whoami"])
ubuntu
0
>>>