Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.05.2016, 02:59
Кандидат Javascript-наук
Отправить личное сообщение для SpaceAlarm Посмотреть профиль Найти все сообщения от SpaceAlarm
 
Регистрация: 05.05.2016
Сообщений: 103

помощь в скрипте подключения ssh (multi)
Добрую ночь, вообщем нужна помощь, необходимо, что бы подключение было из массива, то есть что бы было мульти подключения к ssh ( более 1 подключения с разными параметрами подключения)
function tested(){

var  hostParamsArray =  new Array();
	 hostParamsArray =  { host: '', port: 22, username: '', password: '' };
	 hostParamsArray =  { host: '', port: 22, username: '', password: '' };

	  
var command = "", conn = new Client()	
	conn.on('ready', function() {
	logger.info('SSH Successful connection: '+ hostParamsArray.host + ' Server#1')

    command = 'touch tesst.log'
    conn.exec(command,function(err, stream) {
    if (err) throw err;
    stream.on('close', function() {
      console.log('Stream :: close');
      conn.end();
    }).on('data', function(data) {
      console.log('STDOUT: ' + data);
	  
    }).stderr.on('data', function(data) {
      console.log('STDERR: ' + data);
    });
  });
}).connect(hostParamsArray)
        conn.on('error', function(err) {
            console.log(err)
});
}

Последний раз редактировалось SpaceAlarm, 05.05.2016 в 03:35.
Ответить с цитированием
  #2 (permalink)  
Старый 05.05.2016, 07:57
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

SpaceAlarm,
Вопрос #1 - зачем вам несколько ssh соединений?
Ответить с цитированием
  #3 (permalink)  
Старый 05.05.2016, 13:09
Кандидат Javascript-наук
Отправить личное сообщение для SpaceAlarm Посмотреть профиль Найти все сообщения от SpaceAlarm
 
Регистрация: 05.05.2016
Сообщений: 103

Потому что эта функция будет вызвана при определенном событии, а функция должна будет уже отправить на несколько серверов одинаковую команду
Ответить с цитированием
  #4 (permalink)  
Старый 05.05.2016, 14:49
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от SpaceAlarm Посмотреть сообщение
Потому что эта функция будет вызвана при определенном событии, а функция должна будет уже отправить на несколько серверов одинаковую команду
Ну тогда, во-первых, у вас неправильное присвоение Значений элементам массива:
var  hostParamsArray =  new Array();
	 hostParamsArray =  { host: '', port: 22, username: '', password: '' };
	 hostParamsArray =  { host: '', port: 22, username: '', password: '' };

Смотри http://www.on-line-teaching.com/js/js.arrays.htm

Во-вторых - conn тоже должны быть массивом и создаваться в цикле с использованием соответствующего hostParamsArray
Ответить с цитированием
  #5 (permalink)  
Старый 05.05.2016, 14:56
Кандидат Javascript-наук
Отправить личное сообщение для SpaceAlarm Посмотреть профиль Найти все сообщения от SpaceAlarm
 
Регистрация: 05.05.2016
Сообщений: 103

Как примерно должно хотя бы быть? я просто только начал работать с js..
var  hostParamsArray =  new Array();
     hostParamsArray[0] =  { host: '', port: 22, username: '', password: '' };
     hostParamsArray[1] =  { host: '', port: 22, username: '', password: '' };

Последний раз редактировалось SpaceAlarm, 05.05.2016 в 15:00.
Ответить с цитированием
  #6 (permalink)  
Старый 05.05.2016, 15:11
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

SpaceAlarm,
Примерно так. Можно использовать push.
А потом
var command = "", conn = [];	
for (var i = 0; i < hostParamsArray.length; i++) {
        conn[i] = new Client();
        conn[i].on('ready', function() {
            logger.info('SSH Successful connection: '+ hostParamsArray[i].host + ' Server#' +(i + 1))

и т.д.
Не забывайте ставить ; в конце строк - для разделения операторов

Последний раз редактировалось Dilettante_Pro, 05.05.2016 в 15:16.
Ответить с цитированием
  #7 (permalink)  
Старый 05.05.2016, 15:21
Кандидат Javascript-наук
Отправить личное сообщение для SpaceAlarm Посмотреть профиль Найти все сообщения от SpaceAlarm
 
Регистрация: 05.05.2016
Сообщений: 103

А как будет примерно выглядеть если брать ип для подключения из таблицы бд ?
function server1 (){

var  hostParamsArray =  new Array();
     hostParamsArray[0] =  { host: '', port: 22, username: '', password: '' };
     hostParamsArray[1] =  { host: '', port: 22, username: '', password: '' };	  
	  
var command = "", conn = [];	
for (var i = 0; i < hostParamsArray.length; i++) {
    conn[i] = new Client();
    conn[i].on('ready', function() {
    logger.info('SSH Successful connection:  Server#' +(i + 1))
	command= "touch test.log";
    conn[i].exec(command,function(err, stream) {
    if (err) throw err;
    stream.on('close', function() {
      console.log('Stream :: close');
      conn[i].end();
    }).on('data', function(data) {
      console.log('STDOUT: ' + data);
	  if(data.indexOf('123') + 1){
		logger.info('Update');
	  }
    }).stderr.on('data', function(data) {
      console.log('STDERR: ' + data);
    });
  });
}).connect(hostParamsArray[i])
        conn.on[i]('error', function(err) {
            console.log(err);
});
}}

А что сейчас не так?
throw new Error('Invalid username');
    ^

Последний раз редактировалось SpaceAlarm, 05.05.2016 в 15:38.
Ответить с цитированием
  #8 (permalink)  
Старый 05.05.2016, 15:42
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

SpaceAlarm,
Строка 14
conn[i].exec(command,function(err, stream) {

command в вашем варианте - массив, а здесь - простая переменная
Лучше переделайте command в простую переменную - как массив она (пока что - может, в дальнейшем будут разные команды) не нужна.
Строка 29
conn.on[i]('error', function(err) {
- не там индексные скобки.

А в параметрах у вас
hostParamsArray[0] = { host: '', port: 22, username: '', password: '' };
- так и есть? или подставлены значения?
Ответить с цитированием
  #9 (permalink)  
Старый 05.05.2016, 15:44
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

SpaceAlarm,
В конце строки 28 по идее должна быть ;
Ответить с цитированием
  #10 (permalink)  
Старый 05.05.2016, 15:49
Кандидат Javascript-наук
Отправить личное сообщение для SpaceAlarm Посмотреть профиль Найти все сообщения от SpaceAlarm
 
Регистрация: 05.05.2016
Сообщений: 103

function server1 (){

var  hostParamsArray =  new Array();
     hostParamsArray[0] =  { host: '', port: 22, username: '', password: '' };
	 hostParamsArray[1] =  { host: '', port: 22, username: '', password: '' };
	  
var command = "", conn = [];	
for (var i = 0; i < hostParamsArray.length; i++) {
    conn[i] = new Client();
    conn[i].on('ready', function() {
    logger.info('SSH Successful connection:  Server#' +(i + 1))
	command = "touch test.log";
    conn[i].exec(command,function(err, stream) {
    if (err) throw err;
    stream.on('close', function() {
      console.log('Stream :: close');
      conn[i].end();
    }).on('data', function(data) {
      console.log('STDOUT: ' + data);
	  if(data.indexOf('123') + 1){
		logger.info('Update');
	  }
    }).stderr.on('data', function(data) {
      console.log('STDERR: ' + data);
    });
  });
}).connect(hostParamsArray[i])
        conn[i].on('error', function(err) {
            console.log(err);
});
}}

Значения в параметрах подключения естественно подставлены)
conn[i].exec(command,function(err, stream) {
           ^
TypeError: Cannot read property 'exec' of undefined
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь в скрипте на jQuery artem9009 Общие вопросы Javascript 14 29.09.2015 18:29
Помощь в скрипте nikson909 Events/DOM/Window 1 15.04.2014 10:36
Помощь в скрипте. evgenij17 Мобильный JavaScript 5 25.11.2012 00:45
Ошибка в простеньком скрипте, нужна помощь Taisia Элементы интерфейса 11 07.03.2010 00:51