【问题标题】:How to run .sh script form Django view?如何从 Django 视图中运行 .sh 脚本?
【发布时间】:2016-01-22 09:35:13
【问题描述】:

堆栈溢出。

我正在尝试从 Django 视图运行一些简单的 bash 脚本 (.sh)。

我的意见.py:

def start_stop(request):
    subprocess.Popen(['/home/ubuntu/contacts/contacts/scripts/test.sh'], shell=True)
    result = 'Success'
    return HttpResponse(result)

我的 bash 脚本 test.sh:

echo "testing text"
source /home/ubuntu/contacts/ENV/bin/activate
cd /home/ubuntu/contacts/contacts/scripts/
python final_poster.py

我的主要目标是激活 virtualenv 并启动 python 脚本名称“final_poster.py”。但它不起作用。我也尝试使用 subprocess.call 没有任何成功结果。我卡住了,你能帮帮我吗?

【问题讨论】:

  • 你能详细说明什么是行不通的吗?
  • 什么不完全有效?您收到错误消息了吗?
  • @NahuelIanni .sh 脚本不运行 python 脚本。我不知道具体为什么。现在我尝试使用 subprocess.call 并获得返回码 126,不知道这是什么意思。
  • @nikihub 阅读我上面的评论。
  • 为什么不能在项目中包含脚本,导入,调用函数?

标签: python django bash shell django-views


【解决方案1】:

我认为如果在 shell 上看不到任何错误,那么脚本运行正常。如果你想查看 python shell 的输出,那么你可以在 bash 脚本中添加logging。例如:

echo "testing text"
source /home/ubuntu/contacts/ENV/bin/activate
cd /home/ubuntu/contacts/contacts/scripts/
python final_poster.py >> logfile.log

查看SO answer了解详情。

【讨论】:

  • 我尝试对具有 shebang #!/bin/sh.sh 文件执行类似操作,但 #!/bin/bash 确实有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-12
  • 2020-05-01
  • 2017-06-20
  • 2012-11-24
  • 1970-01-01
  • 2013-01-29
  • 2014-03-15
相关资源
最近更新 更多