直到最近,它运行良好,但是当我今天尝试使用它时,它无法正常工作。它返回以下错误:
错误:命令失败:/ bin / sh -c /home/pi/RPi-Computer-Power/RPi-Server/routes/../scripts/hash.js 12345678 / bin / sh:1: /home/pi/RPi-Computer-Power/RPi-Server/routes/../scripts/hash.js: 许可被拒绝
我非常困惑,因为当我尝试从命令行运行脚本时,它运行得很好; /home/pi/RPi-Computer-Power/RPi-Server/routes/../scripts/hash.js 12345
执行完美。
这是我尝试执行脚本的代码。 (index.js)
exec(__dirname+"/../scripts/"+req.params.script+" "+req.body.params, function(err, stdout, stderr) {
console.log("err: ",err,"stdout: ",stdout,"stderr: ",stderr);
if(err){
res.send("<a href='/'>< Back</a> <b>Program Error:</b> "+err.toString());
return;
}
//res.send("<a href='/'>< Back</a> <b>Program Output:</b> <div style='white-space:pre-line>'"+stdout+stderr+"</div>");
res.render("programOutput", {output: stdout});
});
如果有人有任何帮助,请提前感谢您。 尼尔
答案 0 :(得分:3)
我想到了两件事:
1)确保您尝试执行的脚本可执行文件:chmod +x /folder/script
2)许多Linux
发行版的默认终端shell为bash
。您显示的错误包括使用/bin/sh -c
,这会在Linux
的许多dash
版本中默认为(是,终端的默认shell
和运行没有终端的脚本)。因此,由于它似乎适用于bash
,因此请尝试使用bash -c /folder/script
唤起脚本。