繁体   English   中英

如何从 javascript 客户端运行 shell 命令?

[英]How to run shell command from javascript client-side?

我有最简单的程序:1个HTML文件,1个CSS文件,1个JS文件,直接在我自己的电脑上运行。 我想要做的是,当您按下程序中的一个按钮时,一个shell 命令(Windows) 会直接在计算机上运行。 这将生成文件,该文件又将在程序内部进一步使用。

看来您不能仅通过 JS 访问本地文件,所以我安装了 NodeJS(这对我来说是全新的)。 但我仍然无法让它以这种方式工作。

我最终让 NodeJS 以 JS 和 CSS 文件也可以工作的方式托管 HTML 页面的唯一方法是复制我在此处获得的代码: Z5E056C500A1C4B6A7110B50D807BADE6Z3://310D80D807BADE6Z5com (我称之为server.js )。

但是我仍然无法找到在客户端运行该 shell 命令时调用server.js的方法。 一些帖子建议为此使用 AJAX ,例如此处https://stackoverflow.com/a/53897335 ,但我无法找到任何方法在server.js中成功捕获它。

我想出了如何以另一种迂回的方式做到这一点:

使用 Django,您可以轻松地将 JS 和 Python 结合起来,并且 Python 可以更轻松地运行 Z2591C98B701129BEE944 个命令。


如果有人想要确切的代码:

Python (views.py):

import subprocess

def home(request):
    if request.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest':
        subprocess.call(["ls", "-l"])
    return render(request, 'index.html')

Javascript:

function toView() {
    var csrftoken = $("[name=csrfmiddlewaretoken]").val();
    $.ajax({
        method: 'POST',
        url: '',
        headers:{
            "X-CSRFToken": csrftoken
        },
        data: {},
        success: function (data) {
             alert("it worked!");
        },
        error: function (data) {
             alert("it didnt work");
        }
    });
}

HTML (index.html):

        <form method="post">
             {% csrf_token %}
            <button type="button" onclick="toView()">Do x</button>
        </form>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM