2017-05-05 288 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