Javascript 使SSH连接在nodejs中保持活动状态
我使用简单的ssh-npm模块进行远程连接,它可以很好地使用下面的代码Javascript 使SSH连接在nodejs中保持活动状态,javascript,node.js,Javascript,Node.js,我使用简单的ssh-npm模块进行远程连接,它可以很好地使用下面的代码 var SSH = require('simple-ssh'); var ssh = new SSH({ host: 'localhost', user: 'username', pass: 'password' }); 但问题是,当我第一次执行命令时,它工作正常,但当我下次尝试执行时,进程处于空闲状态 window.setInterval(function(){ ssh.exec('ec
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
可能会导致问题(至少,我测试脚本时是这样)
不要使用setInterval
,而是在exec
结束但开始新呼叫之前使用setTimeout
并重置连接
这对我很有用:
setTimeout(function executeCommand() {
ssh.exec('echo $PATH', {
out: function(stdout) {
console.log('S', stdout);
},
exit: function() {
ssh.reset(function() {
setTimeout(executeCommand, 1000);
});
}
}).start();
}, 1000);
你把
setTimeout
和setInterval
搞混了吗?@robertklep对不起,对不起,我把它放错地方了。这只是打字错误。我在一个事件中执行代码,我删除了该代码并放置了interval。