Russian Qt Forum

Qt => Работа с сетью => Тема начата: Павелъ от Январь 30, 2018, 16:00



Название: Реализация простого удалённого администрирования.
Отправлено: Павелъ от Январь 30, 2018, 16:00
Доброго времени суток.

Необходимо обработать вывод bash-скриптов на стороне клиента (с получением информации на сервер).

Есть 2 подхода.

1) Использовать программу-клиент, которая будет запущена на устройстве и по tcp получать команды на запуск bash скриптов с дальнейшим отправлением обработанной информации серверу.
2) Использовать подключение по ssh или telnet.

Первый вариант я реализую.

Остаётся разобраться, как работать со вторым.

Тут я столкнулся с трудностями. Запустить выполнение bash-скрипта на серверной машине проблем нет. QProcess - readAll().

А как быть с удалённым запуском? Ручками подключиться через терминал по ssh к клиенту легко. Перед тобой полноценный терминал, где ты можешь выполнять те же команды, что и на серверной машине.

А через QProcess это сделать возможно?
1) Генерация ключа.
2) Ввод пароля (от этого пункта можно избавиться).
3) Отправка команд на выполнение вместе с подключением.

Можно как-то реализовать такое подключение и получение информации в виде одного bash-скрипта, в котором на вход поступали бы адрес хоста, логин, пароль, команда с параметрами, а на выходе после закрытия соединения выдавалась бы полученная от программы информация?

Может telnetom это легче реализовать, или есть другие способы?


Название: Re: Реализация простого удалённого админис
Отправлено: alex312 от Январь 30, 2018, 19:07
ssh может выполнять команды на удаленной машине.
Код
ssh user@192.168.1.xxx /usr/bin/uname -a
 
Что бы постоянно не вводить пароль нужно на все нужные машины разложить открытый ключ.
Либо пользовать sshpass


Название: Re: Реализация простого удалённого админис
Отправлено: Павелъ от Январь 30, 2018, 23:05
ssh может выполнять команды на удаленной машине.
Код
ssh user@192.168.1.xxx /usr/bin/uname -a
 
Что бы постоянно не вводить пароль нужно на все нужные машины разложить открытый ключ.
Либо пользовать sshpass


sshpass - хорошая вещь, спасибо.

Только имеющиеся bash-скрипты в файлах на текущей машине не получится использовать для запросов на стороне удалённой машины.

Код:
sshpass -p 'yourpassword' ssh -o StrictHostKeychecking=no join@IP "command"
Придётся писать ещё набор скриптов, где перед началом имеющихся запросов вставлять sshpass. Или всё-таки есть возможность использовать bash-скрипт текущей машины на удалённой?


Название: Re: Реализация простого удалённого админис
Отправлено: alex312 от Январь 31, 2018, 08:05
Или всё-таки есть возможность использовать bash-скрипт текущей машины на удалённой?
Как я уже писал выше, кроме sshpass, можно разложить свой публичный ключь на удаленные мащины, тогда ssh будет логиниться  по ключю, без ввода пароля.

http://www.linuxproblem.org/art_9.html


Название: Re: Реализация простого удалённого админис
Отправлено: Павелъ от Январь 31, 2018, 08:21
Или всё-таки есть возможность использовать bash-скрипт текущей машины на удалённой?
Как я уже писал выше, кроме sshpass, можно разложить свой публичный ключь на удаленные мащины, тогда ssh будет логиниться  по ключю, без ввода пароля.

http://www.linuxproblem.org/art_9.html


Данный процесс можно каким-то образом автоматизировать, чтобы максимум, что требовалось от пользователя, - это "OK"?

По-моему, легче реализовать соединение по sshpass, чем каждый раз при добавлении новой машины пересылать туда ключ.
Но, может QProcess позволяет отвечать на вопросы программы, тогда просто можно будет "OK" каким-то образом передать. Пока, что я только считывал вывод программ в GUI.

Вопрос был поставлен иначе: "могу ли я bash-скрипты текущей машины запускать на удалённой с помощью этих средств?".

Сейчас на время придётся просто дописать  в скриптах вначале sshpass.


Название: Re: Реализация простого удалённого администрирования.
Отправлено: alex312 от Январь 31, 2018, 08:35
минус sshpass'а в том, что у вас на машине будут все пароли и логины от клиентских машин. А если кто-то поменяет пароль ?
А если кто-то запретит логин попаролю ?


Название: Re: Реализация простого удалённого админис
Отправлено: qate от Январь 31, 2018, 12:54
Вопрос был поставлен иначе: "могу ли я bash-скрипты текущей машины запускать на удалённой с помощью этих средств?".

https://unix.stackexchange.com/questions/87405/how-can-i-execute-local-script-on-remote-machine-and-include-arguments


Название: Re: Реализация простого удалённого администрирования.
Отправлено: ax от Февраль 01, 2018, 11:26
Может подойдет вариант - https://github.com/Russell91/sshrc (https://github.com/Russell91/sshrc)