2011-03-13 6 views
10

J'essaie d'exécuter un processus ssh enfant dans node.js et de le contrôler via mon programme. Mon code:Utilisation de SSH sur 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); 
}); 

Je peux entrer le mot de passe dans la console, mais je ne peux rien faire par la suite. Je reçois la ouput console suivante:

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 

Quelqu'un at-il une idée comment je peux obtenir ce travail?

Merci!

+0

Check this out https://github.com/steelbrain/node-ssh –

Répondre

11

essayer une petite modification:

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

et:

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

désolé, je ne sais pas vraiment ce que ces pseudo terminaux sont donc aucune explication, voir man ssh. Rappelez-vous également que la commande reset sera utile dans ces expériences. –

+0

Merci! Ce truc ATS est maintenant corrigé! Mais après avoir entré le mot de passe et en appuyant sur Entrée, je ne peux voir aucune sortie de ssh. Une idée pour ça? –

+0

J'ai testé si les commandes que j'ai entrées sont exécutées. Et ils sont! Je ne reçois que la sortie des commandes. Avez-vous une idée de comment obtenir la sortie manquante? –

6

a créé un SSHClient Ive pour Node.js maintenant. Vous pouvez télécharger le code source au https://github.com/VanCoding/NodeSSH.

Espérons que cela aidera d'autres personnes.

+0

Lien brisé, nouvel emplacement est https://github.com/VanCoding/NodeSSH – mindeavor

+0

Oui, j'ai changé mon nom, désolé . –

+1

Est-ce que cela fonctionne avec PuTTY sur Windows? –

Questions connexes