Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

162
Vistas
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
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda