Ошибка соединения node.js ECONNRESET на удаленном Windows SSH - PullRequest
0 голосов
/ 13 апреля 2019

Я установил openssh на своем удаленном сервере Windows и протестировал его с помощью putty. Теперь я хочу подключиться к удаленному серверу через node.js, поэтому установил один пакет "simple-ssh". Этот пакет также хорошо работает с удаленным сервером Linux, но выдает ошибку с Windows Server.

вот мой кодовый файл,

var SSH = require('simple-ssh');
var ssh;
ssh = new SSH({
            host: 'XXX.XXX.XX.101',
            user: 'username',
            pass: 'password'
        });

var command = 'typeperf "\\Processor(_Total)\\% Processor Time"'

console.log('command :'+command)

ssh.exec(command, {
    out: function(stdout) {
        console.log(stdout);
    }
}).start();

ssh.on('error', function(err) {
            console.log('something went wrong.');
            console.log(err);           
            ssh.end();
        });

И ниже ошибка я получаю в консоли,

command :typeperf "\Processor(_Total)\% Processor Time"
something went wrong.
{ Error: read ECONNRESET
    at TCP.onStreamRead (internal/stream_base_commons.js:111:27)
  errno: 'ECONNRESET',
  code: 'ECONNRESET',
  syscall: 'read',
  level: 'client-socket' }

пожалуйста, обратите внимание, это работает, когда я выполняю с сессией замазки или когда я ставлю var command = 'ping -t XXX.XXX.XX.101', но не с var command = 'typeperf "\\Processor(_Total)\\% Processor Time"' через скрипт node.js. Пожалуйста, помогите решить эту проблему, так как я боролся в течение нескольких недель.

Большое спасибо заранее.

1 Ответ

0 голосов
/ 14 апреля 2019

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

Я изменил

var command = 'typeperf "\\Processor(_Total)\\% Processor Time"'

на

var command = 'typeperf \\"\\Processor(_Total)\\% Processor Time\\"'

И это сработало.: -)

...