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

2つのことが頭に浮かぶ:

1)あなたが実行しようとしているスクリプトが実行元であることを確認してください:chmod +x /folder/script

2)多くのLinuxディストリビューションのデフォルトのターミナルシェルはbashです。表示されるエラーには、/bin/sh -cを使用します。デフォルトではLinux個のディストリビューションがdashになります(端末の場合はshell、端末がない場合はスクリプトを実行します)。したがって、bashで動作するように見えるので、bash -c /folder/scriptでスクリプトを呼び起こそうとしてください。

+1

ありがとう、スクリプトディレクトリメソッドの 'chmod + x *'が私のために働いてくれてありがとう。私は 'chmod 755 *'にしようと思ったが、それは私がする必要がなかったと思う。ありがとう! – ifconfig

関連する問題