LinuxForum.Fans
Тема

Удаленное управление демонами

Автор: opryatniyav 195 сообщений 20483 просмотров
#192592

Добрый день мега мозги
есть необходимость автоматизировать копирование определенных файлов с одного сервера на другие но при этом необходимо стопарить службы на этих удаленных серверах и после копирования запускать их.
Буду рад любой помощи
заранее благодарен

#192594

opryatniyav, написать соответствующий скрипт и запускать его либо по расписанию — cron, либо — «ручками», по ssh.

#192602

opryatniyav, насколько я понял - наверняка нужны бекапы web, тогда:
в cron скрипт -> останов сервисов -> дампы баз, rsync копирование -> запуск сервисов.
rsyn + ssh - идеально подходит.

#192681

А можно поподробнее про ssh.
Как должен выглядеть конфиг /etc/ssh/sshd_config чтоб он не требовал пароль или секретную фразу при авторизации
я писал так
Protocol 2
PasswordAuthentication no
X11Forwarding yes
PermitRootLogin yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/id_rsa
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
UseLogin no
Subsystem sftp /usr/libexec/sftp-server
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL

потом с генерировал ключи Ssh-keygen –t rsa –b 4096
скопировал их на удаленный сервер cat id_rsa.pub | ssh 10.77.*.* "cat >> ~/.ssh/id_rsa"

запускаю eval `ssh-agent`
потом ssh-add
ввожу секретный ключ

вопрос заключается в том как сделать чтоб он не требовал постоянно секретный ключ
или подскажите как подкорректировать конфиг чтоб при авторизации не нужно было вводить пароль

вот конфиг клиента с которого нужно выполнять эти действия /etc/ssh/ssh_config
Host *
ForwardAgent yes
ForwardX11Trusted yes
IdentityFile ~/.ssh/id_rsa
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL

это нужно выполнять на ОС: SLES9, SLES10, SLES11

#192687

Вы, когда ключи генерировали, какую-либо парольную фразу вводили?

#192692

ну да сначала ввел Test$4
во второй раз когда пробовал 12345

#192695
opryatniyav написал:
ну да сначала ввел Test$4
во второй раз когда пробовал 12345

Разумным компромиссом может быть использование ключей авторизации без парольной фразы.

#192696
opryatniyav написал:
PermitRootLogin yes

Следует отказаться от прямого root-доступа, разве что если иначе нельзя решить вашу задачу.

#192697

меня это тоже устроит только где конфиг поправить подскажите

#192698

нужно под рутом делать я понимаю что это не безопасно

#192699
opryatniyav написал:
меня это тоже устроит только где конфиг поправить подскажите

При создании пары ключей, дважды нажмите «Enter» в ответ на запрос парольной фразы.

#192700
opryatniyav написал:
нужно под рутом делать я понимаю что это не безопасно

Сомневаюсь, что иначе нельзя. Опишите подробно стоящую перед вами задачу, и решение найдётся.

#192704

Lupo Alberto спасибо за помощь сегодня попробую

#192720

opryatniyav, кстати, демонов стопить можно и не удаленно и бэкапить не с удаленной машины. Все это можно делать по крону локально. А потом просто забирать архив. Или с локальной машины отправлять архив на удаленный бэкап-сервер- так секурнее и проще.

#192722

все получилось спасибо
есть еще вопросик как правильно настроить логи в /etc/ssh/sshd_config
чтоб он маячил при разрыве связи или же если отправляемая команда выполнилась с ошибкой или вообще не выполнилась
желательно чтоб отчет приходил на почту

#192727
Denlookh написал:
opryatniyav, кстати, демонов стопить можно и не удаленно и бэкапить не с удаленной машины. Все это можно делать по крону локально. А потом просто забирать архив. Или с локальной машины отправлять архив на удаленный бэкап-сервер- так секурнее и проще.

Объясню ситуацию по подробнее есть много серверов 15 шт на каждом из них нужно стопарить демона JBOSS потом заливать ear на эти сервера после удачного выполнения нужно стартовать JBOSS если же что то пошло не так маячить на почту

#192736
opryatniyav написал:
Объясню ситуацию по подробнее есть много серверов 15 шт

Есть такая программа — clusterssh, позволяющая, насколько я понял из описания, выполнять определённую команду одновременно на разных SSH-серверах.

opryatniyav написал:
на каждом из них нужно стопарить демона JBOSS потом заливать ear на эти сервера после удачного выполнения нужно стартовать JBOSS если же что то пошло не так маячить на почту

Написать соответствующий скрипт, в котором учесть всё вам необходимое, в том числе отправка сообщений об ошибке на e-mail. С помощью sudo разрешить запуск скрипта непривилегированному пользователю. Так вам не нужен будет root-доступ.

#192766

увы clusterssh мне не подойдет потому что все сервера работают в консольном режиме а эту утилита только в графическом как я понял

#192769

opryatniyav, как вариант, на клиентском компьютере можно создать алиасы для подключения к определённым машинам вида:
На машине-клиенте файл ~/.ssh/config

text

PermitLocalCommand yes

Host host_1 HostName host_1.example.com User user_1 Port 3322 LocalCommand /usr/local/ВАШ_СКРИПТ.sh

Host host_2 HostName host_2.example.com User user_2 Port 3322 LocalCommand /usr/local/ВАШ_СКРИПТ.sh

И тогда достаточно выполнить что-либо вроде
[console]
for i in host_1 host_2
do
ssh $i
done
[/console]
...чтобы выполнить нужные команды за разумное время wink
P.S. Это примерный алгоритм.

#192770
opryatniyav написал:
а эту утилита только в графическом как я понял

Скорее всего графический режим нужен только на управляющем компьютере.

Войдите или зарегистрируйтесь, чтобы ответить.