为了账号安全,请及时绑定邮箱和手机立即绑定

从 JavaScript 网页启动 shell 脚本文件

从 JavaScript 网页启动 shell 脚本文件

PHP
眼眸繁星 2023-03-04 11:17:13
我有一个网站,我在 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?!我知道这似乎是从网页启动脚本的安全漏洞,但这是在用户登录后在受控环境中完成的。欢迎任何想法...
查看完整描述

2 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

我的问题的解决方案是调用一个执行我的脚本的 PHP 页面:javascript:


location.href = "test.php";

php 页面(test.php):


<?php

   $outcome = shell_exec('/var/www/html/mytest.sh 2>&1');

   echo $outcome;

?>

但是,为了能够运行该脚本,您必须将 selinux 配置为“允许”。有很多安全方法可以代替将 Web 服务器安全性降低到“宽松”但不适用于我的 shell 脚本(我调用了许多程序和其他脚本)。


查看完整回答
反对 回复 2023-03-04
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

据我所知,process.exec() 是一个 node.js 代码。它不在浏览器上运行,与浏览器 Javascript 和 Node.Js 不同

两者可能使用相同的语言,但它们运行的环境不同。

因此,如果“/var/www/html/mytest/TestAPI.sh”文件在您的服务器上,您可以使用 PHP 甚至 nodeJS 来运行它。您只需要创建一个运行该脚本的端点。

如果您打算使用 PHP,那么我认为您可以使用shell_exec()来实现这一点。


查看完整回答
反对 回复 2023-03-04
  • 2 回答
  • 0 关注
  • 147 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信