Ejecute el script de shell con node.js (ChildProcess)


Quiero ejecutar un script de shell en mi nodo.servidor js, pero no pasó nada...

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

Otro ChildProcess funciona perfecto, pero el proceso anterior no lo hará.

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

Si corro el script en terminal, entonces funciona. Alguna idea? (chmod + x está establecido)

Author: Ralf, 2013-10-01

2 answers

La función exec callback tiene los argumentos error, stdout y stderr pasados. Vea si pueden ayudarlo a diagnosticar el problema escupiéndolos a la consola:

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);
    }
});
 57
Author: smokey.edgy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-28 01:44:12
exec('sh ~/play.sh /media/external/' + req.params.movie ,function(err,stdout,stderr){
      console.log(err,stdout,stderr);
 })

Ejecuta su play.sh shellscript con /media/external/+req.params.película como argumento. La salida está disponible a través de stdout,variables stderr en la devolución de llamada.

O PRUEBA ESTO

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
Author: n_rao,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-28 07:11:05