BAS nodejs ssh2 выполнение команд на сервере



  • Решил протестировать как работает модуль ssh2 на здешнем nodejs

    console.log('start');
    
    await (new Promise((resolve, reject) => {
    	var Client = require('ssh2').Client;
    var username = 'user';
    var password = '1';
    
    var conn = new Client();
    conn.on('ready', function() {
      console.log('Client :: ready');
      conn.exec('sudo apt-get install zip', { pty: true }, function(err, stream) {
        if (err) throw err;
        stream.on('close', function(code, signal) {
          console.log('Stream :: close :: code: ' + code + ', signal: ' + signal);
          conn.end();
        }).on('data', function(data) {
            if (data.toString().trim() == '[sudo] password for user:'){
                stream.write(password + '\n')
            }
     
            [[STDOUT]].push(data.toString().trim());
    
            console.log('STDOUT: ' + data.toString().trim());
        }).stderr.on('data', function(data) {
          console.log('STDERR: ' + data);
        });
      });
    }).connect({
      host: '192.168.117.128',
      port: 22,
      username: username,
      password: password
    });
    	resolve()
    }));
    
    
    console.log('end');
    

    Скрин того что ранее на сервере не было установлено приложение zip а после выполнения скрипта BAS zip стал доступен на сервере
    http://prntscr.com/sh93to

    В консоле написало только это
    [909380817] [12:49:48] Поток №1 : start
    [909380817] [12:49:48] Поток №1 : end

    Очень хорошо что это вообще отработало без ошибок.
    Это несомненно не может не радовать.
    Но все таки смущает то что я в консоле BAS не вижу ни каких выводов STDOUT а мне бы хотелось их видеть и анализировать

    И так с любыми командами они выполняются на сервере но у меня в консоле ни чего не видно.
    Я даже думал записывать их в заранее созданный в BAS массив [[STDOUT]].push(data.toString().trim());
    но массив после выполнения кода пустой.

    Может кто нить сталкивался с такими проблемами и сможет мне объяснить что я делаю не так.





  • Ура заработало

    stream.on('close', function(code, signal) {
          console.log('Stream :: close :: code: ' + code + ', signal: ' + signal);
          conn.end();
          resolve()
        })
    

    я переместил функцию resolve() куда нужно и все



  • This post is deleted!

Log in to reply