Запустите скрипт оболочки с помощью кнопки HTML - PullRequest
15 голосов
/ 04 июня 2011

Я хочу запустить скрипт bash при нажатии кнопки на веб-сайте. Это моя первая попытка:

<button type="button" onclick="/path/to/name.sh">Click Me!</button>

Но не повезло. Есть предложения?

Ответы [ 6 ]

20 голосов
/ 04 июня 2011

Как сказал Люк, вам нужно использовать язык на стороне сервера, например, php. Это действительно простой пример PHP:

<?php
if ($_GET['run']) {
  # This code will run if ?run=true is set.
  exec("/path/to/name.sh");
}
?>

<!-- This link will add ?run=true to your URL, myfilename.php?run=true -->
<a href="?run=true">Click Me!</a>

Сохраните это как myfilename.php и поместите его на компьютер с веб-сервером с установленным php. То же самое можно сделать с помощью asp, java, ruby, python, ...

5 голосов
/ 04 июня 2011

PHP, вероятно, самый простой.

Просто создайте файл script.php, содержащий <?php shell_exec("yourscript.sh"); ?>, и отправьте всех, кто нажмет кнопку, по этому адресу.Вы можете вернуть пользователя на исходную страницу с заголовком:

<?php
shell_exec("yourscript.sh");
header('Location: http://www.website.com/page?success=true');
?>

Ссылка: http://php.net/manual/en/function.shell-exec.php

4 голосов
/ 19 сентября 2016

Это на самом деле просто расширение ответа BBB, которое приведет к тому, что мой эксперимент заработает.

Этот скрипт просто создаст файл / tmp / testfile, когда вы нажмете кнопку с надписью «Открыть скрипт».

Для этого требуется 3 файла.

  1. Фактический HTML-сайт с кнопкой.
  2. PHP-скрипт, который выполняет скрипт
  3. A Script

Дерево файлов:

root@test:/var/www/html# tree testscript/
testscript/
├── index.html
├── testexec.php
└── test.sh

1.Основная веб-страница:

root@test:/var/www/html# cat testscript/index.html
<form action="/testscript/testexec.php">
    <input type="submit" value="Open Script">
</form>

2.Страница PHP, которая запускает скрипт и перенаправляет обратно на главную страницу:

root@test:/var/www/html# cat testscript/testexec.php
<?php
shell_exec("/var/www/html/testscript/test.sh");
header('Location: http://192.168.1.222/testscript/index.html?success=true');
?>

3.Скрипт:

root@test:/var/www/html# cat testscript/test.sh

#!/bin/bash

touch /tmp/testfile
2 голосов
/ 09 ноября 2013

Вы можете выполнять серверные сценарии в bash без проблем.

Вот еще один урок: http://www.yolinux.com/TUTORIALS/BashShellCgi.html

2 голосов
/ 04 июня 2011

Здесь есть учебное пособие.Это послужит хорошей отправной точкой -

http://www.cyberciti.biz/tips/executing-linuxunix-commands-from-web-page-part-i.html

0 голосов
/ 06 ноября 2018

Вот как это выглядит в чистом bash

cat /usr/lib/cgi-bin/index.cgi

#!/bin/bash
echo Content-type: text/html
echo ""
## make POST and GET stings
## as bash variables available
if [ ! -z $CONTENT_LENGTH ] && [ "$CONTENT_LENGTH" -gt 0 ] && [ $CONTENT_TYPE != "multipart/form-data" ]; then
read -n $CONTENT_LENGTH POST_STRING <&0
eval `echo "${POST_STRING//;}"|tr '&' ';'`
fi
eval `echo "${QUERY_STRING//;}"|tr '&' ';'`

echo  "<!DOCTYPE html>"
echo  "<html>"
echo  "<head>"
echo  "</head>"

if [[ "$vote" = "a" ]];then
echo "you pressed A"
  sudo /usr/local/bin/run_a.sh
elif [[ "$vote" = "b" ]];then
echo "you pressed B"
  sudo /usr/local/bin/run_b.sh
fi

echo  "<body>"
echo  "<div id=\"content-container\">"
echo  "<div id=\"content-container-center\">"
echo  "<form id=\"choice\" name='form' method=\"POST\" action=\"/\">"
echo  "<button id=\"a\" type=\"submit\" name=\"vote\" class=\"a\" value=\"a\">A</button>"
echo  "<button id=\"b\" type=\"submit\" name=\"vote\" class=\"b\" value=\"b\">B</button>"
echo  "</form>"
echo  "<div id=\"tip\">"
echo  "</div>"
echo  "</div>"
echo  "</div>"
echo  "</div>"
echo  "</body>"
echo  "</html>"

Сборка с https://github.com/tinoschroeter/bash_on_steroids

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