簡體   English   中英

node.js ssh2 => 如何關閉連接和處理 ECONNRESET 錯誤

[英]node.js ssh2 => how to close connection and handle ECONNRESET error

在一個 node.js 項目中,我在一台遠程 windows 機器上安裝並配置了 OPENSSH,並嘗試使用 ssh2(最新版本)package 從本地 windows 服務器執行命令。遠程機器上有一個 exe 文件一直運行直到使用取消執行.

這是我的路由文件代碼來滿足用戶請求。

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...

請幫我處理這個錯誤。 掙扎了很多天來解決這個錯誤。 提前謝謝了。

您需要添加錯誤處理:

conn.on('error', function(err) {
        //Handle Error here
})

我遇到過同樣的問題。 SSH2 錯誤處理不會通過標准事件發射 go。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM