我有一个网站,我在 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 脚本(我调用了许多程序和其他脚本)。
慕虎7371278
TA贡献1802条经验 获得超4个赞
据我所知,process.exec() 是一个 node.js 代码。它不在浏览器上运行,与浏览器 Javascript 和 Node.Js 不同
两者可能使用相同的语言,但它们运行的环境不同。
因此,如果“/var/www/html/mytest/TestAPI.sh”文件在您的服务器上,您可以使用 PHP 甚至 nodeJS 来运行它。您只需要创建一个运行该脚本的端点。
如果您打算使用 PHP,那么我认为您可以使用shell_exec()来实现这一点。
- 2 回答
- 0 关注
- 147 浏览
添加回答
举报
0/150
提交
取消