Перейти к содержимому

Фотография

не могу подключиться к серверу через ssh и spring

selenium spring java

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 13

#1 virtus

virtus

    Новый участник

  • Members
  • Pip
  • 15 сообщений

Отправлено 30 октября 2014 - 08:23

Привет,

может кто знает, не могу подключиться к серверу, через ssh

через путти все работает.

SEVERE: Cannot connect to q1@srv01
com.jcraft.jsch.JSchException: Auth cancel
    at com.jcraft.jsch.Session.connect(Session.java:490)
    at com.jcraft.jsch.Session.connect(Session.java:162)
    at com.db.selenium.SSH.init(SSH.java:28)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1612)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1553)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1483)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:524)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:323)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:107)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1391)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1132)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:522)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:607)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
    at com.db.selenium.StartSelenium.main(StartSelenium.java:26)

property file:

 

ssh.url=srv01 ssh.port=22 ssh.username=q1

ssh.password=q1

 

 

main.xml file :

 

 

<bean name="ssh" class="com.db.selenium.SSH" init-method="init">             <property name="remotePlaybackPath" value="${ssh.playback.path}"/>             <property name="session" ref="sshSession"/>

</bean>

 

 

java class

private void init() {
        log.debug("StrictHostKeyChecking = " + JSch.getConfig("StrictHostKeyChecking"));
        try {
            session.connect(); //exception
        } catch (JSchException e) {
            String msg = "Cannot connect to " + session.getUserName() + "@" + session.getHost();
            log.fatal(msg, e);
            throw new RuntimeException(msg, e);
        }
        if (remotePlaybackPath == null || remotePlaybackPath.length() == 0) {
            String msg = "Empty recording path";
            log.fatal(msg);
            throw new RuntimeException(msg);
        } else if (remotePlaybackPath.charAt(remotePlaybackPath.length() - 1) != '/') {
            remotePlaybackPath += '/';
        }
    }

Может кто знает в чем проблема?

Спасибо.

 


  • 0

#2 Petrov.Sergey

Petrov.Sergey

    Опытный участник

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 30 октября 2014 - 09:20

2 года назад я тоже заморочился использованием библиотеки для SSH-коннекта.

Использую ch.ethz.ssh2.* из библиотеки ganymed-ssh2-build251beta1.jar

 

Вашим JSch тоже пробовал, но не вышло (возможно, навыков не хватало + компетентных советчиков под рукой не было).

С ганимедом всё ОК:

	public Connection connect(String hostname) {
		Connection conn = new Connection(hostname);
		try {
			conn.connect();
			boolean isAuthenticated = conn.authenticateWithPassword(SSHuser, SSHpassword);
			if (!isAuthenticated)
				throw new IOException("Authentication failed.");
		} catch (IOException e) {
			System.out.println("Connection to " + hostname + " is failed");
			e.printStackTrace();
		}
		return conn;
	}

Кстати, сравнил сейчас мой и Ваш метод.

А где Вы используете username & password для коннекта?

Пардон, не заметил проперти :)

 

Плюс, не могли бы Вы привести код, который вызывает метод init()


  • 0
Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

#3 virtus

virtus

    Новый участник

  • Members
  • Pip
  • 15 сообщений

Отправлено 30 октября 2014 - 09:26

 

2 года назад я тоже заморочился использованием библиотеки для SSH-коннекта.

Использую ch.ethz.ssh2.* из библиотеки ganymed-ssh2-build251beta1.jar

 

Вашим JSch тоже пробовал, но не вышло (возможно, навыков не хватало + компетентных советчиков под рукой не было).

С ганимедом всё ОК:

	public Connection connect(String hostname) {
		Connection conn = new Connection(hostname);
		try {
			conn.connect();
			boolean isAuthenticated = conn.authenticateWithPassword(SSHuser, SSHpassword);
			if (!isAuthenticated)
				throw new IOException("Authentication failed.");
		} catch (IOException e) {
			System.out.println("Connection to " + hostname + " is failed");
			e.printStackTrace();
		}
		return conn;
	}

Спасибо. Мне предлагали такой ещё вариант рабочий:

public Session getUnixSession(String user, String password, String host) {
Session session = null;
JSch jsch = null;
//
try {
jsch = new JSch();
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session = jsch.getSession(user, host, 22);
session.setPassword(password);
session.setConfig(config);
session.connect();
System.out.println("Connected to host: "+host + " under " + user + " user.");
} catch (Exception ex) {
ex.printStackTrace();
}

return session;
}

единственное, так как весь проект до меня был написан с учетом спринга, тонаверное нужно будет много переделывать, хотя не уверен точно.


  • 0

#4 virtus

virtus

    Новый участник

  • Members
  • Pip
  • 15 сообщений

Отправлено 30 октября 2014 - 09:29


Кстати, сравнил сейчас мой и Ваш метод.

А где Вы используете username & password для коннекта?

Пардон, не заметил проперти :)

 

Плюс, не могли бы Вы привести код, который вызывает метод init()

 

 

 

метод init вызывается спрингом

 

<bean name="ssh" class="com.db.selenium.SSH" init-method="init">             <property name="remotePlaybackPath" value="${ssh.playback.path}"/>             <property name="session" ref="sshSession"/>

</bean>

 

проект написан был на спринге. вот я думаю, насколько сильно щас нужно переделывать чтоб проверить ваш код.


  • 0

#5 Petrov.Sergey

Petrov.Sergey

    Опытный участник

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 30 октября 2014 - 12:24

Кстати, насчёт моего кода.

Конкретно ганимедовская либа не даёт открыть сессию и держать её столько, сколько нужно, работая как в "шелл-режиме".

Она позволяет открыть коннект, выполнить команду, которая возвращает результат (или несколько через ";"), а потом закрывает сессию.

Вот дока по этой либе: http://www.ganymed.e...sessioncommands


  • 1
Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

#6 virtus

virtus

    Новый участник

  • Members
  • Pip
  • 15 сообщений

Отправлено 30 октября 2014 - 12:28

Кстати, насчёт моего кода.

Конкретно ганимедовская либа не даёт открыть сессию и держать её столько, сколько нужно, работая как в "шелл-режиме".

Она позволяет открыть коннект, выполнить команду, которая возвращает результат (или несколько через ";"), а потом закрывает сессию.

Вот дока по этой либе: http://www.ganymed.e...sessioncommands

спасибо! это важная информация. 


  • 0

#7 Petrov.Sergey

Petrov.Sergey

    Опытный участник

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 30 октября 2014 - 12:40

 

Кстати, насчёт моего кода.

Конкретно ганимедовская либа не даёт открыть сессию и держать её столько, сколько нужно, работая как в "шелл-режиме".

Она позволяет открыть коннект, выполнить команду, которая возвращает результат (или несколько через ";"), а потом закрывает сессию.

Вот дока по этой либе: http://www.ganymed.e...sessioncommands

спасибо! это важная информация. 

 

Для меня это тоже было проблемой. Но сейчас навострился. Все тяжёлые скрипты запихал в баш-файлы на удалённом серваке и через SSH-connect вызываю эти скрипты и забираю результат либо в виде файла (ганимедовская либа позволяет осуществлять также SCP-connect = Secure Copy Protocol для обмена файлами с SSH-сервером), либо в виде консольного потока вывода в формате data и в формате error:

		try {
			sess.execCommand(command);

			BufferedReader stdoutReader = new BufferedReader(new InputStreamReader(new StreamGobbler(sess.getStdout())));
			BufferedReader stderrReader = new BufferedReader(new InputStreamReader(new StreamGobbler(sess.getStderr())));

			String data = new String(), errors = new String();
			while (true) {
				String line = stdoutReader.readLine();
				if (line == null)
					break;
				data += line + "\n";
			}
			stdoutReader.close();
			output.setData(data);

			while (true) {
				String line = stderrReader.readLine();
				if (line == null)
					break;
				errors += line + "\n";
			}
			stderrReader.close();
			output.setErrors(errors);
		} catch (IOException e) {
			e.printStackTrace();
		}

  • 1
Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

#8 virtus

virtus

    Новый участник

  • Members
  • Pip
  • 15 сообщений

Отправлено 30 октября 2014 - 12:45

 

 

Кстати, насчёт моего кода.

Конкретно ганимедовская либа не даёт открыть сессию и держать её столько, сколько нужно, работая как в "шелл-режиме".

Она позволяет открыть коннект, выполнить команду, которая возвращает результат (или несколько через ";"), а потом закрывает сессию.

Вот дока по этой либе: http://www.ganymed.e...sessioncommands

спасибо! это важная информация. 

 

Для меня это тоже было проблемой. Но сейчас навострился. Все тяжёлые скрипты запихал в баш-файлы на удалённом серваке и через SSH-connect вызываю эти скрипты и забираю результат либо в виде файла (ганимедовская либа позволяет осуществлять также SCP-connect = Secure Copy Protocol для обмена файлами с SSH-сервером), либо в виде консольного потока вывода в формате data и в формате error:

		try {
			sess.execCommand(command);

			BufferedReader stdoutReader = new BufferedReader(new InputStreamReader(new StreamGobbler(sess.getStdout())));
			BufferedReader stderrReader = new BufferedReader(new InputStreamReader(new StreamGobbler(sess.getStderr())));

			String data = new String(), errors = new String();
			while (true) {
				String line = stdoutReader.readLine();
				if (line == null)
					break;
				data += line + "\n";
			}
			stdoutReader.close();
			output.setData(data);

			while (true) {
				String line = stderrReader.readLine();
				if (line == null)
					break;
				errors += line + "\n";
			}
			stderrReader.close();
			output.setErrors(errors);
		} catch (IOException e) {
			e.printStackTrace();
		}

интересно.

 

а случайно не было у вас опыта работы со сценариями тестировщиков, которые могли бы вызываться из java, может ещё selenium как то бы использовался. может динамические скрипты, написанные, например, на js, которые периодически могут меняться и следовательно меняться процесс тестирования, сборки?


  • 0

#9 Petrov.Sergey

Petrov.Sergey

    Опытный участник

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 31 октября 2014 - 06:10

Такого опыта не было.


  • 0
Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

#10 virtus

virtus

    Новый участник

  • Members
  • Pip
  • 15 сообщений

Отправлено 31 октября 2014 - 06:18

Такого опыта не было.

Ясно!


  • 0

#11 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 871 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 31 октября 2014 - 15:51

Переместил в более общий раздел, вопрос не имеет отношения к Selenium.


  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#12 virtus

virtus

    Новый участник

  • Members
  • Pip
  • 15 сообщений

Отправлено 31 октября 2014 - 16:08

Переместил в более общий раздел, вопрос не имеет отношения к Selenium.

хм, а не подскажите как это сделать?


  • 0

#13 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 871 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 01 ноября 2014 - 11:16

Если вопрос про Jsch -- у меня есть работающие примеры, могу поделиться (но выше кажется уже был один).

Если вопрос про то, как заставить его работать в контексте Spring -- не могу ответить, не увлекаюсь спрингом.


  • 1
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#14 virtus

virtus

    Новый участник

  • Members
  • Pip
  • 15 сообщений

Отправлено 05 ноября 2014 - 06:15

Если вопрос про Jsch -- у меня есть работающие примеры, могу поделиться (но выше кажется уже был один).

Если вопрос про то, как заставить его работать в контексте Spring -- не могу ответить, не увлекаюсь спрингом.

Спасибо, обрущусь если понадобиться. Пока нашел один пример.


  • 0



Темы с аналогичным тегами selenium, spring, java

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных