web-dev-qa-db-fra.com

Exécuter un script shell avec un bouton html

Je souhaite lancer un script bash lorsqu'un bouton est enfoncé sur un site Web ..__ Ceci est ma première tentative:

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

Mais pas de chance. Aucune suggestion?

14
dukevin

Comme Luke l’a déclaré, vous devez utiliser un langage côté serveur, tel que php . Voici un exemple php très simple:

<?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>

Enregistrez ceci sous le nom myfilename.php et placez-le sur une machine avec un serveur Web avec php installé. La même chose peut être accomplie avec asp, Java, Ruby, python, ...

20
nsg

PHP est probablement le plus facile.

Créez simplement un fichier script.php qui contient <?php Shell_exec("yourscript.sh"); ?> et envoyez toute personne qui clique sur le bouton à cette destination. Vous pouvez renvoyer l'utilisateur à la page d'origine avec en-tête:

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

Référence: http://php.net/manual/en/function.Shell-exec.php

5
BBB

Il s’agit en réalité d’une extension de la réponse de BBB qui a permis à mon expérience de fonctionner.

Ce script créera simplement un fichier/tmp/testfile lorsque vous cliquez sur le bouton "Ouvrir le script".

Cela nécessite 3 fichiers.

  1. Le site Web HTML actuel avec un bouton.
  2. Un script php qui exécute le script
  3. Un script

L'arbre de fichiers:

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

1. La page Web principale:

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

2. La page PHP qui exécute le script et redirige vers la page principale:

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. Le script:

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

#!/bin/bash

touch /tmp/testfile
3
FreeSoftwareServers

Vous pouvez faire des scripts côté serveur en bash sans problème.

Voici un autre tutoriel: http://www.yolinux.com/TUTORIALS/BashShellCgi.html

2
thom

Il y a un tutoriel donné ici. Cela servira de bon point de départ - 

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

2
Ashish Agarwal

Voici à quoi ça ressemble en pure 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>"

Construire avechttps://github.com/tinoschroeter/bash_on_steroids

0
Tino Schröter