CGI-скрипт не выполняется или не вызывается скриптом .sh

Я начал небольшой проект только для практики дома. Я использую raspberry pi с debian linux, на плате установлен веб-сервер apache 2, я понятия не имею о веб-сервере, но каким-то образом удалось создать html-страницу с кнопкой на ней и cgi-скриптом, работающим с кнопкой click. Cgi-скрипт имеет html-код, который реагировать на нажатие кнопки. Отображает привет, мир, за которым следует команда, вызывающая сценарий оболочки .sh.

У сценария оболочки есть следующая команда RPI.a (мой проект на языке c, который вызывает gpio pin, отлично работающий при выполнении сценария .cgi в командной строке.

1) Общее нажатие кнопки Html -> 2) вызывает cgi-скрипт (оболочка с html) -> 3) вызывает оболочку (.sh) ->, которая вызывает мигающий светодиод моего приложения.

Работает хорошо при выполнении .cgi вручную из командной строки. Но при нажатии кнопки из html он пропускает "$ (sh script.sh) и выполняет следующую строку.

Разрешения для всех файлов на чтение и выполнение для всех файлов.

.cgi скрипт

#!/bin/bash
 echo "Content-type: text/html"
 echo "" 
echo "<html><head><title>Bash as CGI" 
echo "</title></head><body>" 
echo "<h1>Hello world</h1>"
 "$(sh Home_auto.sh)" 
echo "skipps the program" 
echo "</body></html>"

Мой скрипт Home_auto.sh

sudo RPI.a<<EOF
EOF

ДОБАВИЛ мое приложение Dir в $ PATH var.

Я обнаружил, что он не может выполнить мое приложение несколько раз, когда я не являюсь пользователем root. Команда RPI.a дисплея не найдена Пожалуйста, помогите мне с вызовом script.sh, который будет вызывать мое приложение RPI.a при нажатии кнопки.


person user3232919    schedule 24.01.2014    source источник
comment
покажите нам сценарий cgi.   -  person glenn jackman    schedule 24.01.2014
comment
#! / bin / bash -x echo Тип содержимого: text / html echo echo ‹html› ‹head› ‹title› Bash as CGI echo ‹/title› ‹/head› ‹body› echo ‹h1› Привет, мир ‹/ h1 ›$ (sh Home_auto.sh) echo пропускает программу echo ‹/body› ‹/html›   -  person user3232919    schedule 25.01.2014
comment
Выше приведен cgi-скрипт, который я использую для выполнения моего .sh-скрипта. I .sh-скрипт имеет RPI.   -  person user3232919    schedule 25.01.2014
comment
Пожалуйста, добавьте его в вопрос, где вы можете правильно отформатировать его как код   -  person glenn jackman    schedule 25.01.2014


Ответы (2)


Включите модуль cgi, запустив a2enmod

Если вы не видите следующие файлы

ls /etc/apache2/mods-enabled/cgi*

/etc/apache2/mods-enabled/cgid.conf
/etc/apache2/mods-enabled/cgid.load

Затем вам нужно включить модуль cgi

sudo a2enmod cgi
sudo service apache2 restart
person stephen kampouris    schedule 26.08.2016
comment
Большое тебе спасибо - person user3232919; 30.03.2017
comment
Если вы ищете синтаксис LoadModule, это что-то вроде: LoadModule cgid_module modules/mod_cgid.so или LoadModule cgi_module modules/mod_cgi.so http://httpd.apache.org/docs/current/howto/cgi.html - person cole; 21.09.2018

Проверяем, может ли www-data выполнить скрипт (разрешения, пути):

sudo su www-data /your/script.sh
person PiEnthusiast    schedule 25.01.2014
comment
он выполнил сценарий .sh, в свою очередь, вызвал мое приложение, которое скомпилировано с использованием кросс-компилятора - person user3232919; 27.01.2014