2011-03-13 17 views
10

Estoy intentando ejecutar un proceso hijo ssh en Node.js y controlarlo a través de mi programa. Mi código:El uso de SSH sobre Node.js

var util = require('util'); 
var spawn = require('child_process').spawn; 
var ssh = spawn('ssh', ['cloudstudios.ch']); 

ssh.stdout.on('data', function (data) { 
    console.log('stdout: ' + data); 
}); 

ssh.stderr.on('data', function (data) { 
    console.log('stderr: ' + data); 
}); 

ssh.on('exit', function (code) { 
    console.log('child process exited with code ' + code); 
}); 

Puedo ingresar la contraseña en la consola, pero no puedo hacer nada después de eso. Obtengo la siguiente salida de consola:

stderr: Pseudo-terminal will not be allocated because stdin is not a terminal. 

[email protected]'s password: 
stdout: Linux v 2.6.32-5-xen-amd64 #1 SMP Wed Jan 12 05:46:49 UTC 2011 x86_64 

The programs included with the Debian GNU/Linux system are free software; 
the exact distribution terms for each program are described in the 
individual files in /usr/share/doc/*/copyright. 

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent 
permitted by applicable law. 

stderr: stdin: is not a tty 

¿Alguien tiene una idea de cómo puedo hacer que esto funcione?

Gracias!

+0

mira esto https://github.com/steelbrain/node-ssh –

Respuesta

11

tratar una pequeña modificación:

var ssh = spawn('ssh', ['-tt', 'xxx']);

y:

process.stdin.resume(); 
process.stdin.on('data', function (chunk) { 
    ssh.stdin.write(chunk); 
}); 
+0

lo siento yo no sabe realmente lo que esos seudo-terminales son tan ninguna explicación, ver man ssh. Recuerde también que el reinicio del comando será útil en estos experimentos. –

+0

¡Gracias! ¡Esa cosa TTY ahora está arreglada! Pero después de ingresar la contraseña y presionar enter, no puedo ver ninguna salida de ssh. Alguna idea para esto? –

+0

He probado si los comandos que ingreso se ejecutan. ¡Y estan! Solo no obtengo el resultado de los comandos. ¿Tienes una idea de cómo obtener la salida faltante? –

6

he creado un SSHClient para Node.js ahora. Puede descargar el código fuente en https://github.com/VanCoding/NodeSSH.

esperan que ayude a otras personas.

+0

enlace roto passoword, nueva ubicación es https://github.com/VanCoding/NodeSSH – mindeavor

+0

Sí, he cambiado de nombre, lo siento . –

+1

¿Funciona esto con PuTTY en Windows? –

Cuestiones relacionadas