运行带有 html 按钮的 shell 脚本

duk*_*vin 12 html bash shell

我想在网站上按下按钮时启动 bash 脚本。这是我的第一次尝试:

<button type="button" onclick="/path/to/name.sh">Click Me!</button>
Run Code Online (Sandbox Code Playgroud)

但没有运气。有什么建议?

编辑 -遵循 slhclk 和 mit 的建议:

我在 /var/www 中有一个 php 文件,我将其指向我的网络浏览器。文件内容如下:

<?php
exec("/home/aa/scripts/test.sh");
?>
Run Code Online (Sandbox Code Playgroud)

tesh.sh 包含以下内容:

screen -S server1 -X quit
Run Code Online (Sandbox Code Playgroud)

如果我输入/home/aa/scripts/test.shshell,脚本就可以执行。但是,当我将网络浏览器指向http://example.com/screen.php(其中包含上面的代码)时,我看到一个空白页面并且脚本没有执行。两者都有执行权限。为什么不起作用?

slh*_*hck 11

你试图做的事情是不可能的。

请注意,始终有两个方面:客户端和服务器端。脚本是在客户端计算机上还是在服务器上?


如果它在客户端:您作为访问者只会看到一个 HTML 网站。onClick将只能启动 JavaScript(或其他脚本语言),而不能启动任何驻留在您计算机上的任意 shell 脚本。HTML 脚本只能在浏览器中运行,并且只能做有限的事情。最重要的是,它们无法与您的计算机进行交互。

想一想:浏览器如何知道如何打开文件?您不认为这也会是一个安全问题吗?一个普通网站触发客户端计算机上的脚本执行?如果有类似的东西onClick('rm -rf /home/user')怎么办?

如果您希望在客户端上执行代码,另一种方法是运行 Java 小程序,但这并不完全相同,而且非常复杂。我认为没有必要详细解释这一点。


如果脚本在服务器上:如果您想在服务器端运行脚本并让用户触发它的执行,那么您需要使用服务器端编程语言。只是 HTML 不会这样做,因为它或多或少是一个静态文件。如果您想与服务器交互,例如可以使用PHP

它具有exec运行存储在 Web 服务器上的命令行脚本的功能。所以基本上,你可以编写exec('/path/to/name.sh');,它会在服务器上运行脚本。

然而,仅仅把它放进去onClick是不够的。如果您还不了解 PHP 和服务器端 Web 编程,您可能想先阅读一些教程,然后再提出更具体的问题。


如果您有一个带有适当exec(...)命令的 php 文件,请确保该脚本不仅为用户设置了执行权限,还为 Web 服务器所在的组设置了执行权限,因此在最简单的情况下,只需777.

如果出现问题,请检查脚本的返回值echo exec(...);以查看是否有任何错误。

您还可以从命令行运行脚本,而不是从浏览器运行php /path/to/file.php.