从 JavaScript 网页启动 shell 脚本文件

我有一个网站,我在 JS 中创建了一个简单的表单: Launch form

 function()

    {


var thePrompt = window.open("", "", "widht=50");

    var theHTML = "";


    theHTML += "<p>Please insert the IP,TestCaseID and your credentials</p>";

    theHTML += "<br/>";

    theHTML += "IPprinter: <input type='text' id='theIP' placeholder='Enter Printer IP'/>";

    theHTML += "<br/>";

    theHTML += "TestCaseID: <input type='text' id='theID' placeholder='Enter TestCase ID'/>";

    theHTML += "<br/>";

    theHTML += "Username: <input type='text' id='theUser' placeholder='Enter Username'/>";

    theHTML += "<br />";

    theHTML += "Password: <input type='text' id='thePass' placeholder='Enter Password'/>";

    theHTML += "<br />";

    theHTML += "<input type='button' value='Launch' id='Launch'/>";

    thePrompt.document.body.innerHTML = theHTML;


    var theIP = thePrompt.document.getElementById("theIP").value;

    var theID = thePrompt.document.getElementById("theID").value;

    var theUser = thePrompt.document.getElementById("theUser").value;

    var thePass = thePrompt.document.getElementById("thePass").value;

    thePrompt.document.getElementById("Launch").onclick = function () {

        var process = require('child_process');

process.exec('./var/www/html/mytest/TestAPI.sh',function (err,stdout,stderr) {

    if (err) {

        console.log("\n"+stderr);

    } else {

        console.log(stdout);

    }

});

    }

当我单击“启动”按钮从“/var/www/html/mytest/TestAPI.sh”启动脚本时,没有任何反应。我哪里错了,或者有其他方法可以执行该脚本,也许使用 PHP?!


我知道这似乎是从网页启动脚本的安全漏洞,但这是在用户登录后在受控环境中完成的。欢迎任何想法...


眼眸繁星
浏览 150回答 2
2回答

不负相思意

我的问题的解决方案是调用一个执行我的脚本的 PHP 页面:javascript:location.href = "test.php";php 页面(test.php):<?php&nbsp; &nbsp;$outcome = shell_exec('/var/www/html/mytest.sh 2>&1');&nbsp; &nbsp;echo $outcome;?>但是,为了能够运行该脚本,您必须将 selinux 配置为“允许”。有很多安全方法可以代替将 Web 服务器安全性降低到“宽松”但不适用于我的 shell 脚本(我调用了许多程序和其他脚本)。

慕虎7371278

据我所知,process.exec() 是一个 node.js 代码。它不在浏览器上运行,与浏览器 Javascript 和 Node.Js 不同两者可能使用相同的语言,但它们运行的环境不同。因此,如果“/var/www/html/mytest/TestAPI.sh”文件在您的服务器上,您可以使用 PHP 甚至 nodeJS 来运行它。您只需要创建一个运行该脚本的端点。如果您打算使用 PHP,那么我认为您可以使用shell_exec()来实现这一点。
打开App,查看更多内容
随时随地看视频慕课网APP