使用html按钮运行shell脚本

Modified on: Mon, 11 Feb 2019 22:20:02 +0800

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

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

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

编辑 -关注slhclk和mit的建议:

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

&lt;?php exec("/home/aa/scripts/test.sh"); ?&gt;

tesh.sh包含这个:

<?php
exec("/home/aa/scripts/test.sh");
?>

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

最佳答案

你想做的事情是不可能的。

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


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

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

另一种方法是运行Java applet,如果你想在客户端上执行代码,但这不完全一样,而且它真的很复杂。我认为没有必要详细解释这一点。


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

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

然而,仅仅将它放入onClick是不够的。如果您还不了解PHP和服务器端Web编程,您可能需要先阅读一些教程,然后再回答一个更具体的问题。


如果您的php文件包含相应的exec(...)命令,请确保该脚本不仅为用户设置了执行权限,还为Web服务器所在的组设置了执行权限,所以在最简单的情况下只需777

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

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

作者:,slhck

相关问答

添加新评论