Quantcast
Channel: CNode:Node.js专业中文社区
Viewing all articles
Browse latest Browse all 14821

使用 ssh2 遇到的问题

$
0
0

问题描述:

  1. 最近想通过node.js来ssh到远端server, 于是参考了ssh2的官网写法,使用时发现,多次调用后,出现了memory leak…
  2. 感觉conn.end()并没有被终止,每次调用都带着上一次的结果,比如第10次调用的时候,就会打印10条 “ console.log(‘Client disconnected’); ”

报错内容:

2018-2-24 17-00-22.png

2018-2-24 17-00-36.png

场景描述

  1. 远程server登录时先输入root密码,所以在stream.on(‘data’)里加了 “if”去匹配 STDIN data 的关键词,成功后输入root 密码
  2. 输入“who”指令,匹配要的关键字后,执行stream.close()退出
  3. 实测中,指令都是被执行成功的

代码如下:

"use strict";
var sshClient = require('ssh2').Client;
var conn = new sshClient();

module.exports.captureWhoAmI = function(targetIp)  {

    var retryMaxTimes = 30;
    var connection1 = {
        host: "10.99.143.66",
        port: 22,
        username: 'username',
        password: 'password'
    };

    conn.on('ready', function () {
        console.log('Client connected to :' + targetIp);
        var num = 0;
        conn.shell(function (err, stream) {
            if (err) {
                console.log(err)
            }
            stream.on('close', function (code, signal) {
                stream.end();
                conn.end();
            }).on('data', function (data) {
                num += 1;
                if (num >= retryMaxTimes) {
                    console.error('Too many times, giving up to capture!!!');
                    stream.close();
                }
                var dataString = data.toString();
                if (dataString.indexOf("Password:") != -1) {
                    stream.write("rootPassword\n");
                    stream.write("who\n");
                }
                if (dataString.indexOf("user") != -1) {
                    stream.close();
                }
                console.log("conn num:" + num + ":" + data);
            }).stderr.on('data', function (data) {
                console.log('STDERR: ' + data);
            });
        })
    }).on('end', function() {
        console.log('Client disconnected');
    }).connect(connection1);
}

希望大家帮忙指点一下,多谢。


Viewing all articles
Browse latest Browse all 14821

Trending Articles