Добрый день мега мозги
есть необходимость автоматизировать копирование определенных файлов с одного сервера на другие но при этом необходимо стопарить службы на этих удаленных серверах и после копирования запускать их.
Буду рад любой помощи
заранее благодарен
Удаленное управление демонами
opryatniyav, написать соответствующий скрипт и запускать его либо по расписанию — cron, либо — «ручками», по ssh.
opryatniyav, насколько я понял - наверняка нужны бекапы web, тогда:
в cron скрипт -> останов сервисов -> дампы баз, rsync копирование -> запуск сервисов.
rsyn + ssh - идеально подходит.
А можно поподробнее про 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
Вы, когда ключи генерировали, какую-либо парольную фразу вводили?
ну да сначала ввел Test$4
во второй раз когда пробовал 12345
ну да сначала ввел Test$4
во второй раз когда пробовал 12345
Разумным компромиссом может быть использование ключей авторизации без парольной фразы.
PermitRootLogin yes
Следует отказаться от прямого root-доступа, разве что если иначе нельзя решить вашу задачу.
меня это тоже устроит только где конфиг поправить подскажите
нужно под рутом делать я понимаю что это не безопасно
меня это тоже устроит только где конфиг поправить подскажите
При создании пары ключей, дважды нажмите «Enter» в ответ на запрос парольной фразы.
нужно под рутом делать я понимаю что это не безопасно
Сомневаюсь, что иначе нельзя. Опишите подробно стоящую перед вами задачу, и решение найдётся.
Lupo Alberto спасибо за помощь сегодня попробую
opryatniyav, кстати, демонов стопить можно и не удаленно и бэкапить не с удаленной машины. Все это можно делать по крону локально. А потом просто забирать архив. Или с локальной машины отправлять архив на удаленный бэкап-сервер- так секурнее и проще.
все получилось спасибо
есть еще вопросик как правильно настроить логи в /etc/ssh/sshd_config
чтоб он маячил при разрыве связи или же если отправляемая команда выполнилась с ошибкой или вообще не выполнилась
желательно чтоб отчет приходил на почту
opryatniyav, кстати, демонов стопить можно и не удаленно и бэкапить не с удаленной машины. Все это можно делать по крону локально. А потом просто забирать архив. Или с локальной машины отправлять архив на удаленный бэкап-сервер- так секурнее и проще.
Объясню ситуацию по подробнее есть много серверов 15 шт на каждом из них нужно стопарить демона JBOSS потом заливать ear на эти сервера после удачного выполнения нужно стартовать JBOSS если же что то пошло не так маячить на почту
Объясню ситуацию по подробнее есть много серверов 15 шт
Есть такая программа — clusterssh, позволяющая, насколько я понял из описания, выполнять определённую команду одновременно на разных SSH-серверах.
на каждом из них нужно стопарить демона JBOSS потом заливать ear на эти сервера после удачного выполнения нужно стартовать JBOSS если же что то пошло не так маячить на почту
Написать соответствующий скрипт, в котором учесть всё вам необходимое, в том числе отправка сообщений об ошибке на e-mail. С помощью sudo разрешить запуск скрипта непривилегированному пользователю. Так вам не нужен будет root-доступ.
увы clusterssh мне не подойдет потому что все сервера работают в консольном режиме а эту утилита только в графическом как я понял
opryatniyav, как вариант, на клиентском компьютере можно создать алиасы для подключения к определённым машинам вида:
На машине-клиенте файл ~/.ssh/config
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. Это примерный алгоритм.
а эту утилита только в графическом как я понял
Скорее всего графический режим нужен только на управляющем компьютере.