|
Модераторы: feodorv |
|
wowka19 |
|
|||
Опытный Профиль Группа: Участник Сообщений: 285 Регистрация: 30.11.2011 Репутация: нет Всего: нет |
Пробовал libSSH и libSSH2 - ничего не понял!
Необходимо подключиться к серверу по SSH и запускать на нем программу (сервер на Ubuntu). Есть рабочий код на C# (клиент на Windows7) выполняющий эту функцию. Причем делает он это через ПАРОЛЬ!!! Я решил повторить это на C++: взял либу libSSH - но приходит ошибка, мол по паролю этот сервер аутентификацию не проводит. Решил глюк либы, т.к. код на C# РАБОТАЕТ! Взял libSSH2 - та же ситуация: запустил пример из архива с исходниками - в ответ идет перечисление поддерживаемых методов аутентификации, причем метод через password ОТСУТСТВУЕТ! и аутентификация проходит через метод "keyboard-interactive". Вопрос: что за фигня? Почему топорный код на C# работает, в то время как ОБЕ сишные либы (независимые друг от друга проекты) кричат о том, что по паролю этот сервер провести аутентификацию ну никак не может? Вопрос2: Что за чудо-метод "keyboard-interactive"? в примере он реализован через странную функцию (я просто смысл не могу понять):
Вопрос3: Может кто подскажет достойную SSH либу без пережитков pure C и, черт возьми, качественной документацией. Это сообщение отредактировал(а) wowka19 - 11.8.2014, 09:47 |
|||
|
||||
borisbn |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 2 Всего: 135 |
Я делал через http://the.earth.li/~sgtatham/putty/latest/x86/plink.exe
Просто запускал его из своей программы -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
wowka19 |
|
||||
Опытный Профиль Группа: Участник Сообщений: 285 Регистрация: 30.11.2011 Репутация: нет Всего: нет |
Аутентификация работает, исполнение команд тоже, но возникла проблема.
Перед основной работой необходимо запустить скрипт, который в контексте текущей сессии работы с linux-консолью устанавливает переменную среды. Запуск происходит так:
После чего идет основная работа. Например:
Но orbit_tool жалуется, что необходимой ему переменной среды нет. И в итоге ничего не выходит. Я полагаю, это происходит из-за того, что после первого запуска plink сессия сбрасывается так как plink завершает свою работу. Как это обойти? Это сообщение отредактировал(а) wowka19 - 15.8.2014, 01:25 |
||||
|
|||||
wowka19 |
|
|||
Опытный Профиль Группа: Участник Сообщений: 285 Регистрация: 30.11.2011 Репутация: нет Всего: нет |
borisbn, в итоге написал баш скрипт, принимающий параметры. Через консоль ("plink login@host -pw pass ...") всё работает. А вот из QProcess - ничего! Возвращает пустоту. Ошибок нет: всё по нулям. Что я делаю не так?
пробовал всё писать в QProcess::start("flghdpigjpdijh") и отдельно от аргументов QProcess::start("p", QStringList...). создавал QProcess и в стеке с QProcess::waitForFinished() и в куче, привязываясь к сигналу fiinished() и readyRead()... Толку ноль :( Это сообщение отредактировал(а) wowka19 - 15.8.2014, 10:30 |
|||
|
||||
wowka19 |
|
|||
Опытный Профиль Группа: Участник Сообщений: 285 Регистрация: 30.11.2011 Репутация: нет Всего: нет |
В итоге я нашел вывод - он оказался в readAllStandardError(); Но почему?? ведь сигнал finished(int exitCode, QProcess::ExitStatus exitStatus) вернул 0 и NormalExit ???
|
|||
|
||||
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |