【问题标题】:Running commands on server through website? [closed]通过网站在服务器上运行命令? [关闭]
【发布时间】:2013-10-20 11:52:04
【问题描述】:

我想创建一个小型网站来控制笔记本电脑上的音乐播放器。我如何(可能使用 AJAX 和/或 Python)在页面上创建一个按钮并让它在服务器上运行一个系统调用,而用户无法修改它?

【问题讨论】:

    标签: python ajax web-applications


    【解决方案1】:

    基本上,您不想(不应该)从网络服务器控制您的音乐播放器。音乐必须驻留在网络服务器上。

    您不需要 Ajax 或 Python 来让服务器流式传输音频。您只需要来自表单的 HTTP GET 或 POST。它在网络服务器上运行 CGI http://en.wikipedia.org/wiki/Common_Gateway_Interface,这会导致服务器提供音频 http://en.wikipedia.org/wiki/MIME_type#Type_audio 以响应您的请求。您需要确保 content-type(MIME 类型)与您的播放器可以播放的内容一致,并确保在接收该类型的内容时启动它。

    【讨论】:

    • 我的笔记本电脑网络服务器。我只想让它运行deadbeaf --nextdeadbeef --prevdeadbeef --play-pause 等。
    • 如果是这样,就不需要网页或服务器,只需创建一个 python 或 shell 脚本来做你想做的事。你们可以使用 CGI 方法并为每个选择设置一个按钮。
    • 但我希望能够从网络上的其他计算机控制它。
    【解决方案2】:

    我曾经使用过一种非常简单但不安全的方法。首先,您必须创建一个在本地服务器上运行的 php 脚本:

    <?php
    $command = $_GET['command'];
    shell_exec($command);
    ?>
    

    您现在可以使用以下 URL 通过 AJAX 调用此脚本:

    http://LOCAL-IP/commandscript.php?command=YOUR_COMMAND
    

    更新(安全修复):

    <?php
        $commands = array(
            "next" => "deadbeaf --next",
            "prev" =>"deadbeef --prev",
            "play" => "deadbeef --play-pause"
        )
    
        $command = $_GET['command'];
    
        if (array_key_exists($command, $commands)) {
            shell_exec($commands[$command]);
    
        }
    ?>
    

    跳过歌曲的网址是:

    http://IP-ADRESS/commandscript.php?command=next
    

    【讨论】:

    • http://local-ip/commandscript.php?command=rm%20-rf%20~/*
    • “不安全”并没有削减它。这与将您的笔记本电脑放在马路中间、登录并将信用卡粘在背面一样安全。
    • 你绝对是对的。我添加了所需的安全性……
    猜你喜欢
    • 2020-10-30
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 2012-08-22
    • 1970-01-01
    • 2016-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多