簡體   English   中英

使用 html 按鈕運行 shell 腳本

[英]Run a shell script with an html button

我想在網站上按下按鈕時啟動 bash 腳本。 這是我的第一次嘗試:

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

但沒有運氣。 有什么建議么?

正如盧克所說,您需要使用服務器端語言,例如 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並將其放置在安裝了 web 服務器的機器上,該服務器安裝了 php。 同樣的事情可以用asp來完成,java, ruby, python, ...

這實際上只是 BBB 答案的擴展,它導致我的實驗工作。

當您單擊“打開腳本”按鈕時,此腳本將簡單地創建一個文件 /tmp/testfile。

這需要 3 個文件。

  1. 帶有按鈕的實際 HTML 網站。
  2. 執行腳本的 php 腳本
  3. 一個腳本

文件樹:

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

PHP 可能是最簡單的。

只需制作一個文件script.php包含<?php shell_exec("yourscript.sh"); ?> <?php shell_exec("yourscript.sh"); ?>並將單擊該按鈕的任何人發送到該目的地。 您可以使用 header 將用戶返回到原始頁面:

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

參考: http://php.net/manual/en/function.shell-exec.php

您可以毫無問題地在 bash 中執行服務器端腳本。

這里有另一個教程: http://www.yolinux.com/TUTORIALS/BashShellCgi.html

這里有一個教程。 這將是一個很好的起點——

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

這就是它在純 bash 中的樣子

貓 /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構建

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM