我正在使用 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
会导致问题(至少,当我测试您的脚本时它看起来是这样的)。
不使用 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);
关于javascript - 在 nodejs 中保持 SSH 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21184415/