it-swarm.com.de

Führen Sie das Shell-Skript mit node.js (childProcess) aus.

Ich möchte ein Shell-Skript auf meinem node.js-Server ausführen, aber es ist nichts passiert ...

childProcess.exec('~/./play.sh /media/external/' + req.params.movie, function() {}); //not working

Ein weiterer childProcess funktioniert einwandfrei, aber der obige Vorgang wird es nicht.

childProcess.exec('ls /media/external/', movieCallback); //works

Wenn ich das Skript im Terminal starte, dann funktioniert es. Irgendwelche Ideen? (chmod + x ist gesetzt)

34
Ralf

Der Rückruf der exec-Funktion enthält die Argumente error, stdout und stderr. Sehen Sie nach, ob sie Ihnen bei der Problemdiagnose helfen können, indem Sie sie auf die Konsole ausspucken:

exec('~/./play.sh /media/external/' + req.params.movie,
  function (error, stdout, stderr) {
    console.log('stdout: ' + stdout);
    console.log('stderr: ' + stderr);
    if (error !== null) {
      console.log('exec error: ' + error);
    }
});
58
smokey.edgy
exec('sh ~/play.sh /media/external/' + req.params.movie ,function(err,stdout,stderr){
      console.log(err,stdout,stderr);
 })

Läuft dein play.sh Shellscript mit /media/external/ + req.params.movie als Argument. Die Ausgabe ist über die Variablen stdout und stderr im Callback verfügbar.

ODER VERSUCHEN SIE DAS

var myscript = exec('sh ~/play.sh /media/external/' + req.params.movie);
myscript.stdout.on('data',function(data){
    console.log(data); // process output will be displayed here
});
myscript.stderr.on('data',function(data){
    console.log(data); // process error output will be displayed here
});`
5
n_rao