2014-01-17 47 views
1

我使用简单的ssh NPM模块进行远程连接,它下面的代码保持SSH连接住的NodeJS

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

该计时器将执行它的第一次,但不会第二次工作。

+0

你混乱'setTimeout'用'setInterval'? – robertklep

+0

@robertklep对不起在我的问题我错了。这只是错字。我在一次事件中执行代码,我删除了该代码并放置了间隔。 – redV

回答

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