保持SSH连接在nodejs中
我正在使用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);
定时器将首次执行它,但不会第二次运行。
看起来,调用exec
时,以前的调用尚未完成可能会导致问题(至less,这就是当我testing你的脚本)。
而不是使用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);