2011-03-03 8 views

Répondre

2

Tout comme avec sftp dans your earlier question, vous pourriez peut-être utiliser le client ssh via un child process.

+0

Ok je vais essayer avec cette. Merci! –

+2

Le grattage des outils de ligne de commande fonctionne, mais il s'agit d'une interface très fragile. Un module NPM réel serait beaucoup plus fiable. – mikemaccana

12

Voici deux autres options:

Le client est assez solide et basique pour un usage général. Le contrôle de nœud est plus adapté pour le contrôle parallèle et asynchrone sur de nombreuses machines (c'est-à-dire le travail sys-admin).

+6

Avez-vous remarqué que mon surnom fait partie de l'URL? ^^ Le code client est à moi. –

+4

@VanCoding lol haha. Toujours drôle quand quelqu'un répond avec quelque chose que vous avez écrit. – Harry

+2

@VanCoding - Quel était le but de votre question si vous l'avez déjà écrit? – theoutlander

14

Les processus fils Node.js ne fonctionneront pas si vous devez utiliser un mot de passe pour la connexion, car le client OpenSSH ne lit pas le mot de passe de stdin, mais d'un pseudo-terminal.

Vous pouvez contourner ce problème en utilisant pty.js:

var pty = require("pty.js"); 
var term = pty.spawn("ssh", ["[email protected]", "whoami"]); 

term.on("data", function(data) { 
    console.log("Incoming: " + data.toString()); 
}); 

// Wait a sec before sending the password. For proper implementation 
// you should wait for the password prompt. 
setTimeout(function(){ 
    term.write("mypassword\n"); 
}, 1000); 

Cela dit, vous devez toujours utiliser des paires de clés SSH pour cela si possible.