Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使SSH连接在nodejs中保持活动状态_Javascript_Node.js - Fatal编程技术网

Javascript 使SSH连接在nodejs中保持活动状态

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

我使用简单的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
,而是在
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。