2017-05-05 234 views
0

直到最近,它运行良好,但是当我今天尝试使用它时,它无法正常工作。它返回以下错误:节点exec无权执行脚本

Error: Command failed: /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: Permission denied

我非常困惑,因为当我尝试从命令行运行脚本,它完美工作; /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

你是如何运行node.js的?它有什么权限? – jfriend00

回答

1

两件事情浮现在脑海中:

1)确保你正在尝试执行的脚本是可执行的EX:chmod +x /folder/script

2)许多Linux分布默认终端外壳是bash。您显示的错误包括使用/bin/sh -c,这将在许多Linux分配中默认为dash(是,不同的默认shell为终端和运行没有终端的脚本)。因此,由于它似乎在bash中工作,请尝试使用bash -c /folder/script来唤起脚本。

+1

是的,谢谢你,脚本目录方法中的'chmod + x *'对我很有用。我以为我试着'chmod 755 *',但我想这不是我需要做的。谢谢! – ifconfig