Tengo este código escrito y quiero ejecutar mi archivo hello.sh desde mi nodo. falla el error es
error: Comando falló: ./hello.sh > output.txt /bin/sh: 1: no se puede crear output.txt: Permiso denegado
¿Cómo puedo cambiar el permission del archivo hello.sh a executable ?
fs.chmod("hello.sh",0o777,(err)=>{ if(err){ console.log(err) return } }) exec("./hello.sh > output.txt", (error, stdout, stderr) => { if (error) { console.log(`error: ${error.message}`); return; } if (stderr) { console.log(`stderr: ${stderr}`); return; } console.log(`stdout: ${stdout}`); });Prueba así:
fs.chmod("hello.sh",0o777,(err)=>{ if(err){ console.log(err); return; } exec("./hello.sh > output.txt", (error, stdout, stderr) => { if (error) { console.log(`error: ${error.message}`); return; } if (stderr) { console.log(`stderr: ${stderr}`); return; } console.log(`stdout: ${stdout}`); }); });También debe asegurarse de que se pueda escribir en el directorio donde se ejecuta hello.sh.
Porque el comando ejecutado es: hello.sh > output.txt
Como el mensaje de error es: cannot create output.txt: Permission denied
no debe ser escribible.
Modifique el directorio que contiene hello.sh para que se pueda escribir, o cambie su comando exec a: ./hello.sh > /tmp/output.txt
Al crear archivos de salida, créelos primero en /tmp para evitar este tipo de problemas. Luego, muévalos a donde deben ir, vuelva a leerlos para transmitirlos de forma asíncrona, etc.