在nodejs中保持SSH连接

时间:2014-01-17 11:07:01

标签: javascript node.js

我正在使用simple-ssh npm模块进行远程连接,它可以正常使用以下代码

 var SSH = require('simple-ssh');

 var ssh = new SSH({
   host: 'localhost',
   user: 'username',
   pass: 'password'
 });

但问题是当我第一次执行命令它工作正常时,但是当我下次尝试执行该进程时它将处于空闲状态。

 window.setInterval(function(){
   ssh.exec('echo $PATH', {
      out: function(stdout) {
         console.log(stdout);
      }
   }).start();
 }, 1000);

计时器将首次执行,但第二次不能执行。

1 个答案:

答案 0 :(得分:2)

似乎在前一次调用时调用exec可能会导致问题(至少,这是我测试脚本时的样子)。

使用setInterval而不是使用setTimeout,并在exec结束时但在开始新呼叫之前重置连接。

这对我有用:

setTimeout(function executeCommand() {
  ssh.exec('echo $PATH', {
    out: function(stdout) {
      console.log('S', stdout);
    },
    exit: function() {
      ssh.reset(function() {
        setTimeout(executeCommand, 1000);
      });
    }
  }).start();
}, 1000);