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());
но массив после выполнения кода пустой.Может кто нить сталкивался с такими проблемами и сможет мне объяснить что я делаю не так.
-
@gomeapat, если код на node.js работает не так как вы хотите, то есть большая вероятность, что проблемы с асинхронностью.
-
Ура заработало
stream.on('close', function(code, signal) { console.log('Stream :: close :: code: ' + code + ', signal: ' + signal); conn.end(); resolve() })
я переместил функцию resolve() куда нужно и все
-
This post is deleted!
-
BAS и сервер
Поддержка • • Fox