Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

159
Views
Ejecutar un comando bash en la máquina host desde un contenedor docker y obtener resultados inconsistentes

Estoy trabajando en una aplicación de nodo de reacción que se ejecutará en un contenedor acoplable. Esta aplicación será una GUI para muchas máquinas virtuales configuradas para los empleados de mi empresa, por lo que el objetivo es que pueda ejecutarse sin configurar nada en la máquina host. Simplemente instale el contenedor docker y ejecútelo.

El problema es que necesito ejecutar comandos en la máquina host desde el contenedor acoplable y obtener la salida. Así que probé este método SSH:

 import exec from 'ssh-exec'; function streamToString(stream) { const chunks = []; return new Promise((resolve, reject) => { stream.on('data', (chunk) => { console.log(Buffer.from(chunk)) chunks.push(Buffer.from(chunk)) }); stream.on('error', (err) => reject(err)); stream.on('end', () => resolve(Buffer.concat(chunks).toString('utf8'))); }) } async function runCommand(command) { try { const res = await streamToString( exec(command, { user: 'user', host: IP_ADRESS, password: 'password' }) ); return res; } catch (error) { console.log(error); } }

,pero a veces funciona, a veces simplemente envía una cadena vacía, y también tarda mucho más de lo que pensaba.

** ¿Hay algún problema con mi código aquí? ¿O el método en sí es incorrecto? **

Ejemplo de uso:

 const result = await runCommand(`git --git-dir=${path}/.git rev-parse --abbrev-ref HEAD`}

Ejemplo del problema:

 app.get("/testing", async (req, res) => { console.log(await runCommand('echo test1')) console.log(await runCommand('echo test2')) console.log(await runCommand('echo test3')) console.log(await runCommand('echo test4')) console.log(await runCommand('echo test5')) res.end("test ended"); })

Producción:

 Example app listening at http://localhost:3006 test2 test5
about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!