我想在网站上按下按钮时启动bash脚本。 这是我的第一次尝试:
<button type="button" onclick="/path/to/name.sh">Click Me!</button>
但没有运气。有什么建议吗?
答案 0 :(得分:20)
正如Luke所说,你需要使用服务器端语言,比如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的Web服务器的计算机上。使用asp,java,ruby,python,...可以完成同样的事情。
答案 1 :(得分:5)
PHP可能是最简单的。
只需制作一个包含script.php
的文件<?php shell_exec("yourscript.sh"); ?>
,然后将点按该按钮的任何人发送到该目的地。您可以将用户返回到包含标题的原始页面:
<?php
shell_exec("yourscript.sh");
header('Location: http://www.website.com/page?success=true');
?>
答案 2 :(得分:3)
这实际上只是BBB答案的扩展,导致我的实验工作。
当您单击显示&#34;打开脚本&#34;的按钮时,此脚本将只创建一个文件/ tmp / testfile。
这需要3个文件。
文件树:
root@test:/var/www/html# tree testscript/
testscript/
├── index.html
├── testexec.php
└── test.sh
<强> 1。主要的WebPage:
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
答案 3 :(得分:2)
这里有一个教程。这将是一个很好的起点 -
http://www.cyberciti.biz/tips/executing-linuxunix-commands-from-web-page-part-i.html
答案 4 :(得分:2)
您可以毫无问题地在bash中执行服务器端脚本。
答案 5 :(得分:0)
这是纯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>"