Node.js ssh2 => 如何关闭连接并处理 ECONNRESET 错误



在一个node.js项目中,我已经在远程Windows机器上安装并配置了OPENSSH,并尝试使用ssh2(最新版本(包从本地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:workangularappservernode_modulesssh2libclient.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 错误处理不经过标准事件发射。

相关内容

最新更新