Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Exec Command ocorre erro - Linux

Estou tentando executar no node o child process e está ocorrendo erro.

executeOnLinux(){
    exec('./agent/teste.sh', (err, stdout, stderr) => {
        if (err) {
            console.error(err);
        return;
        }
        console.log(stdout); 
    });
}

Mensagem de Erro

exec error: Error: Command failed:  ./agent/teste.sh

Por favor, Desde já muito obrigado .

5 respostas

Oi Thiago, você está informando um arquivo de execução, mas o Node não sabe qual programada deveria executar o arquivo, então fica perdido, nesse caso, você precisa informa que o bash deve executar o arquivo.

exec('bash ./agent/teste.sh', ...);

Oi, Wanderson, muito obrigado. De fato deu certo em um .sh de teste, mas acredito que agora o erro esta no arquivo .sh que preciso executar por que deu a mesma msg de erro acrescentado do bash

exec error: Error: Command failed:  bash ./agent/teste.sh

O meu arquivo contem um .jar

#!/bin/bash

file=/home/thiago/Documentos/my.properties

java -jar /home/thiago/Documentos/agent/agent-analytics-1.4.jar $file

já tentei usar a seguinte forma:

file=bash ./home

file=bash /home

Poderia me ajudar mais uma vez, por favor

Thiago, o seu .sh está com permissão de execução? Lembrando que você não precisa colocar o .sh quando você transforma ele em executável.

Eu acho complicado lidar com caminhos relativos no Node, varia bastante. Neste caso, eu recomendo você passar o caminho absoluto do arquivo para o exec.

Opa Wanderson, sobre o .sh está com permissão sim.

Realmente é bem complicado, passando o caminho absoluto. É apresentado a msg.

bash: cd:  Arquivo ou diretório inexistente
solução!

Opa Wanderson, consegui fazer o retorno que eu espera eu dei um console.log no stderr e no stdout para ver o retorno. E dentro do stdout estava o retorno do qual eu precisava é que a mensagem de err que eu passava não estava coerente. Valeu por toda a ajuda