Node exec doesn't have permission to execute script

一曲冷凌霜 提交于 2020-06-27 10:59:11

问题


Up until recently, it has worked fine, but when I tried to use it today, it did not work properly. It returns the following error:

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

I am extremely confused because when I try to run the script from the command line, it works perfectly; /home/pi/RPi-Computer-Power/RPi-Server/routes/../scripts/hash.js 12345 executes flawlessly.

This is the code where I try to execute the script. (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});
      });

If anyone has any help, thank you in advance. Neil


回答1:


Two things come to mind:

1) Make sure that the script you are trying to execute is executable ex: chmod +x /folder/script

2) The default terminal shell on many Linux distributions is bash. The error you displayed includes using /bin/sh -c, which would default in many Linux distributions to dash (yes, a different default shell for the terminal and for running scripts without the terminal). Thus, since it seems to work in bash, try to evoke the script with bash -c /folder/script.



来源:https://stackoverflow.com/questions/43815093/node-exec-doesnt-have-permission-to-execute-script

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!