node.js ssh2 => как закрыть соединение и обработать ошибку ECONNRESET - PullRequest
0 голосов
/ 08 февраля 2020

В проекте node.js я установил и настроил OPENS SH на удаленном компьютере windows и пытаюсь выполнить команды с локального сервера windows с помощью пакета ssh2 (последняя версия). На удаленном компьютере существует один исполняемый файл, который продолжает работать до тех пор, пока не будет отменено выполнение.

Вот мой код файла маршрута для обслуживания запроса пользователя.

const express = require('express');
const Route = express.Router();
var Client = require('ssh2').Client;
var conn = new Client();

Route.route('/start').get(function(req, res) {

    var v_host = 'xxx.xxx.xxx.xx';
    var v_user = 'Administrator';
    var v_pass = 'password';

    conn.on('ready', function() {
        console.log('Client :: start-ready');
        conn.exec('C:\\Work\\echousers.exe', function(err, stream) {
            if (err) {
                console.log('FIRST :: forwardOut error: ' + err);
                return conn.end();
            }
            stream.on('close', function(code, signal) {
                console.log('Stream :: close :: code: ' + code + ', signal: ' + signal);
                conn.end();
            }).on('data', function(data) {
                console.log('connname :' + data);
            });
        });
    }).connect({
        host: v_host,
        port: 22,
        username: v_user,
        password: v_pass
    });

    res.end();
});

Route.route('/stop').get(function(req, res) {
    //conn.destroy();
    conn.end(); 

    res.end();
});

module.exports = Route; 

Он работает при запросе на запуск и «запуске» выполнения пакета, но когда я отправляю запрос «стоп», он выдает ошибку и вылетает сервер узла.

events.js:174
      throw er; // Unhandled 'error' event
      ^

Error: read ECONNRESET
    at TCP.onStreamRead (internal/stream_base_commons.js:111:27) 
Emitted 'error' event at:
    at Socket.<anonymous> (D:\work\angular\app\server\node_modules\ssh2\lib\client.js:307:10)
    at Socket.emit (events.js:189:13)
    at emitErrorNT (internal/streams/destroy.js:82:8)
    at emitErrorAndCloseNT (internal/streams/destroy.js:50:3)    
    at process._tickCallback (internal/process/next_tick.js:63:19)
[nodemon] app crashed - waiting for file changes before starting...

Пожалуйста, помогите мне обработать эту ошибку. Изо всех сил пытается решить эту ошибку в течение многих дней. Большое спасибо заранее.

...