2015-05-22 105 views
5

任何人都可以幫助我,如何斷開使用節點js中的node-ssh模塊的ssh連接。另外如何處理錯誤。如何在節點js中使用node-ssh斷開ssh連接

我的代碼是

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); 

    }); 

請幫助。

回答

4

'node-ssh'包裝似乎不提供'結束'功能,或訪問基礎ssh2連接對象的方式。這給你留下了幾個選擇:

分叉source,編寫'end'方法,並向node-ssh包裝器發出pull請求,以便將來的用戶可以使用wrapper並結束連接。或者,您可以創建一個issue,並在他/她認爲有必要時等待其他人創建功能。

改爲使用底層的ssh2庫。它向你展示了更多的功能,包括'結束'方法來關閉連接,但使用回調而不是承諾,這將需要你重構你的代碼。

此外,您可以添加以下代碼,雖然這是非常嚴重不推薦,因爲它與你沒有自己,並可能破壞與節點-SSH模塊的未來版本的兼容性原型搞亂:您可以撥打ssh.end()關閉連接。

+0

是的這是現在的工作。非常感謝科迪海因斯 – selvan

2

我直接問圖書館的創建者,在這裏,我報告了答案:

「注意:如果是互斥對象的任何事情沒有實現,我花更多的時間比我要,你總是可以使用MySSH.Connection.close()

Issue#9

然後,他已經做了承諾,現在你有你的方法!

ssh.end(); 
2

使用dispose方法。例如:

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(); 
});