Как выполнить скрипт bash через скрипт CGI, написанный на Python? - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь использовать CGI-скрипт, написанный на Python до , выполнить bash-скрипт , однако он работает правильно только тогда, когда я запускаю скрипт python вручную.Когда я запускаю через браузер, выполнение CGI возвращает 200, однако скрипт bash не запускается.

Вот пример того, что я пытаюсь сделать, но использую два простых сценария, просто чтобы объяснить, хорошо?

Сценарий cgi был создан в следующем каталоге apache и доступен без проблем: / var / www / cgi-bin / raf_teste.cgi

Ниже приводится содержаниескрипт raf_teste.cgi :

#!/usr/bin/python3.5
import subprocess
import cgi, cgitb
cgitb.enable()

print ("Content-type:text/html\r\n\r\n")
command = ['./raf.sh']
subprocess.Popen(command)

В том же каталоге "/ var / www / cgi-bin /" BashScript с именем raf.sh было создано: / var / www / cgi-bin / raf.sh

Ниже приводится содержание сценария raf.sh:

#!/bin/bash
echo "rafael" > "/tmp/rafael.txt"

Примечание: В тесте, который я использовал с помощью модуля подпроцесса python для запуска команды linux, все работало отлично, но в этом случае я пытаюсь запустить другой скрипт через CGI python, он не работает и нетотображается сообщение об ошибке.

Не могли бы вы помочь мне, пожалуйста?

1 Ответ

0 голосов
/ 22 мая 2018

Хорошо, почти уверен, что я понял.

Проблема в том, что вы запускали свой скрипт вручную, прежде чем запустили его в Интернете.

Это привело к тому, что "/tmp/rafael.txt" былосоздан, принадлежит вашему пользователю.Теперь ни один другой пользователь (включая пользователя веб-сервера) не может писать в этот файл, потому что файл уже существует, принадлежит вам, и так работает / tmp .

Решение легко: delete "/tmp/rafael.txt".Тогда держу пари, что ваш сценарий работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...