2015-05-22 13 views
5

Czy ktoś może mi pomóc, jak odłączyć połączenie ssh za pomocą modułu node-ssh w węźle js. Również jak radzić sobie z błędami.Jak rozłączyć połączenie ssh za pomocą węzła-ssh w węźle js

mój kod jest

driver = require('node-ssh'); 

    ssh = new driver({ 
       host: '192.168.*.*', 
       username: 'user', 
       password: 'password', 
       privateKey : require('fs').readFileSync('/tmp/my_key') 
      }); 

    ssh.connect().then(function() { 
      /* 
     some code 
     */ 

      },function(error) { 
       console.log(error); 

    }); 

Pls help.

Odpowiedz

4

Opakowanie "node-ssh" nie wydaje się być funkcją "końca" ani sposobem uzyskania dostępu do bazowego obiektu połączenia ssh2. Pozostawia to kilka opcji:

Rozwidlaj source, napisz metodę "zakończ" i wydaj polecenie ściągania do opakowania node-ssh, aby przyszli użytkownicy mogli korzystać z opakowania i zakończyć połączenia. Alternatywnie możesz utworzyć issue i poczekać, aż ktoś inny utworzy funkcjonalność, jeśli uzna to za konieczne.

Zamiast tego należy użyć podstawowej biblioteki ssh2. Udostępnia on znacznie więcej funkcji, w tym metodę "końca", aby zamknąć połączenie, ale zamiast obietnic korzysta z wywołań zwrotnych, co wymagałoby zrestrukturyzowania kodu.

Dodatkowo, można dodać następujące do kodu, choć jest to bardzo mocno nie zaleca, jak to brudząc z prototypu nie właścicielem i może zniszczyć zgodność z przyszłymi wersjami modułu węzła ssh:

driver.prototype.end = function() { 
    this.Connection.end() 
    this.Connected = false 
} 

można następnie wywołać ssh.end(), aby zamknąć połączenie.

+0

Tak, teraz to działa. bardzo dziękuję cody Haines – selvan

2

Poprosiłem bezpośrednio twórca biblioteki, tutaj zgłosić odpowiedź:

„Uwaga: Jeśli cokolwiek z ssh2 obiektu nie jest realizowany i biorę więcej czasu niż powinienem, zawsze można używać MySSH.Connection.close() "

Issue#9

Potem zrobiła commit a teraz masz swój sposób!

ssh.end(); 
2

Użyj metody dispose. Przykład:

const node_ssh = require('node-ssh'); 
const ssh = new node_ssh(); 

ssh.connect({ 
    host: 'XXX', 
    username: 'YYY', 
    privateKey: 'ZZZ' 
}).then(resp => { 
    console.log(resp); 
    ssh.dispose(); 
}); 
Powiązane problemy