在HTML gui上执行shell命令-仅在本地计算机上执行


Executing shell commands on a HTML gui - on local machine only

因此,我正在开发自己的应用程序,需要在其中执行shell命令,甚至在单击按钮时执行csh脚本。所有HTML代码都是通过firefox显示我在arduino上设置的一些传感器的结果,所以我基本上将其用作GUI。HTML页面永远不会在线,它完全在我自己的机器上运行。

我知道这并不直接,因为让HTML在实时网页上运行shell命令是一个安全问题,但我一直在读关于能够使用php脚本执行shell命令的文章,但由于它是在独立的PC上运行的,我不知道如何将其集成到通过点击页面上的按钮运行命令中。

事实上,我根本没有使用php的经验,甚至不知道从哪里开始让它在我的HTML代码中运行。

救命!

编辑:

如果不是php,有没有其他方法可以通过点击html页面上的按钮来运行命令,比如"ls"?

Oli

您可以使用exec php函数,并执行类似exec('/path/myscript.sh') 的脚本

但是,您必须以正确的方式设置php/apache。只需尝试查找一些基本的web服务器配置教程。

php命令exec应该执行一个命令并检索标准输出。

<?php
    $result = exec("wc -l /etc/issue");
    print($result);
?>

使用该打印命令,您可以打印任何html文本,这些文本将插入客户端接收和显示的页面中。因此,只需将php片段与实际的网页放在一起即可。

总的来说,您可以创建一个HTML表单,其中包含与特定shell命令相对应的按钮(我知道这不会在网络上直播,因此安全风险可能不是问题)。

从那里,您将收到PHP中的表单输入(您可以使用Laravel这样的框架,这使得处理前端/后端通信变得更加容易-http://laravel.com/docs/4.2/htmlhttp://laravel.com/docs/4.2/requests)

HTML和PHP的快速示例:

<form id="arduino" method="post" action="{{ url('arduino/control') }}">
                <input type="text" name="command"/>
                <input type="submit">
            </form>
<?php 
Route::post('arduino/control', function () {
$command = Input::get('command');
exec($command); 
});