Nodejs ssh2 exec执行shell超时终止执行

来源:互联网 发布:程序员和老师结婚 编辑:程序博客网 时间:2024/06/05 15:24

使用ssh2 模块执行shell的时候,只有在连接目标机器时,有个readyTimeout用于设置ssh连接目标机器的超时终止的参数。

conn.connect({    host: ip,    port: 22,    username: user,    password: password,    readyTimeout: 5000});

没有用于设置shell执行的超时的参数,但是我的shell命令在机器负载高的情况下返回时间需要很久很久,需要超过一定时间需要终止掉shell。
看了github别人提得issue也没有很好的解决办法,后来用了个取巧的办法如下

解决办法

方法也是蛮简单,结合系统提供的shell命令timeout
例子:

timeout 2s pwd
var Client = require('ssh2').Client;var conn = new Client();conn.on('ready', function() {        var command = 'source ~/.bash_profile;timeout 2s pwd'        conn.exec(command, function(err, stream) {            if (err) throw err;            stream.on('close', function(code, signal) {                conn.end();            }).on('data', function(data) {            });        });    }).on('error', function(err) {    })    .connect({        host: currentHost.host,        port: currentHost.port,        username: currentHost.username,        password: currentHost.password        readyTimeout: 5000    });
原创粉丝点击