Как реализовать работу скрипта по конфигу ?

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Kazak
мл. сержант
Сообщения: 99
Зарегистрирован: 2009-07-28 9:46:46

Как реализовать работу скрипта по конфигу ?

Непрочитанное сообщение Kazak » 2011-05-23 11:27:03

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

Алгоритм:
1.Запускается скрипт под root.
2. Лезет на удаленный сервер и проверяет есть ли там в папке для него конфиги (например по фтп), если есть то качает, нет то прерывает работу.
3. Устанавливает софт ( заведомо известный)
4. Модифицирует дефолтные конфиги установленного софта, перезапускает софт.
5. Добавляет в крон задание раз в 6 часов проверять наличие конфигов, если есть повторить пункты 2, 4.
Думал упросить все это простой заменой .... каждая копия скрипта направляется в свою папку фтп, где лежит готовый руками отредактированный конфиг, скрипт качает конфиг заменяет существующий и перезапускает службу.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35411
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Как реализовать работу скрипта по конфигу ?

Непрочитанное сообщение Alex Keda » 2011-05-23 19:04:18

и что именно у вас не получается?
Убей их всех! Бог потом рассортирует...

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Как реализовать работу скрипта по конфигу ?

Непрочитанное сообщение kpp » 2011-05-25 11:24:35

Я так понимаю вызывает вопросы пункт №4 (4. Модифицирует дефолтные конфиги установленного софта, перезапускает софт.)?
Со всем остальным порядок?
Если так, опишите на примере что должно модифицироваться в конфигах.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

Kazak
мл. сержант
Сообщения: 99
Зарегистрирован: 2009-07-28 9:46:46

Re: Как реализовать работу скрипта по конфигу ?

Непрочитанное сообщение Kazak » 2011-05-26 12:53:50

Alex Keda писал(а):и что именно у вас не получается?
Хочу понять принцип, как реализовать проход по файлу. чтобы скрипт читал первое значение опеределяя его как нужную опцию конфига, и вторую как занчение которое нужно использовать
например:
Test.cfg

Код: Выделить всё

Enabled=1
Job=/tmp/test.job
Schedule=/tmp/job.sched
hostname=example.test.com
Скрипт читает, опеределяет переменные, определяет их значения и выполняет работу.

Kazak
мл. сержант
Сообщения: 99
Зарегистрирован: 2009-07-28 9:46:46

Re: Как реализовать работу скрипта по конфигу ?

Непрочитанное сообщение Kazak » 2011-05-26 12:58:58

kpp писал(а):Я так понимаю вызывает вопросы пункт №4 (4. Модифицирует дефолтные конфиги установленного софта, перезапускает софт.)?
Со всем остальным порядок?
Если так, опишите на примере что должно модифицироваться в конфигах.
Да вы правы ... имено 4 тый пункт вызывает трудности.

Например скрипт должен установить на 1 сервер Apache+Mysql+PHP и взять для него готовые конфиги з папки 1, а на второй Nginx+Mysql+PHP и взять для него конфиги из папки 2, в случае ошибки с апач отправить log admin1@test.com а в случае ошибки с nginx admin2@test.com.

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Как реализовать работу скрипта по конфигу ?

Непрочитанное сообщение kpp » 2011-05-26 13:37:49

Проход по файлу :

Код: Выделить всё

TEMP_IFS="${IFS}"
IFS="="

while read key value
do
 echo "key=\"$key\" value=\"$value\""
 # делаем что нужно
done < Test.cfg

IFS="${TEMP_IFS}"
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

Kazak
мл. сержант
Сообщения: 99
Зарегистрирован: 2009-07-28 9:46:46

Re: Как реализовать работу скрипта по конфигу ?

Непрочитанное сообщение Kazak » 2011-05-27 17:15:00

kpp писал(а):Проход по файлу :

Код: Выделить всё

TEMP_IFS="${IFS}"
IFS="="

while read key value
do
 echo "key=\"$key\" value=\"$value\""
 # делаем что нужно
done < Test.cfg

IFS="${TEMP_IFS}"
А вы не в курсе как можно реализовать автоматический ЧекАут (checkout) по SVN?
# svn co /test.svn.com/trunk

Код: Выделить всё

$  svn co https://subversion.test.com/svn/installtest/trunk
Authentication realm: <https://subversion.test.com:443> Test Restricted Area
Password for 'user':
Authentication realm: <https://subversion.test.com:443>Test Restricted Area
Username: test
Password for 'test':

-----------------------------------------------------------------------
ATTENTION!  Your password for authentication realm:

   <https://subversion.test.com:443> test Restricted Area

can only be stored to disk unencrypted!  You are advised to configure
your system so that Subversion can store passwords encrypted, if
possible.  See the documentation for details.

You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in
'/home/user/.subversion/servers'.
-----------------------------------------------------------------------
Store password unencrypted (yes/no)? yes
A    trunk/index.html
Checked out revision 2.
После запроса с консоли:
svn co https://subversion.test.com/svn/installtest/trunk
прямо в консоль приходит запрос авторизации
Вводится имя
Вводится пароль
Соглашаемся с не шифорованным паролем
ЧекАут закончен
Как автоматизировать этот процесс, нужно позарез.

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Как реализовать работу скрипта по конфигу ?

Непрочитанное сообщение kpp » 2011-05-27 22:44:48

Смотри /home/user/.subversion/servers
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

Гость
проходил мимо

Re: Как реализовать работу скрипта по конфигу ?

Непрочитанное сообщение Гость » 2011-05-28 0:06:52

Как автоматизировать этот процесс, нужно позарез.
это не означает что нужно спамить по всем темам
только что бы вам срочно помогли

sudoroot
проходил мимо
Сообщения: 3
Зарегистрирован: 2011-06-02 12:02:01

Re: Как реализовать работу скрипта по конфигу ?

Непрочитанное сообщение sudoroot » 2011-06-02 12:07:36

Код: Выделить всё

#!/bin/sh

ping="/sbin/ping -c 5"

routechk="`netstat -rn | fgrep default | awk '{print $2}'`"

gw=`ifconfig em0 | awk '/inet/{print $2}'`

rezgw=`ifconfig re0 | awk '/inet/{print $2}'`

############### ping main gateway ###############

$ping $gw > /dev/null

if [ $? = 0 ] && [ $routechk != $gw ]

then

echo "answer from gateway was be given"
echo "check default route and correct"
route change default $gw

elif [ $routechk != $rezgw ]

then

echo "answer from gateway was NOT be given, change route to rezerved gateway";
route change default $rezgw; 

else 

echo "it's ok, i will repeat check again at 5 minuts"

fi
Скрипт который проверяет актуальность основного канала и в случае отсутствия пинга, переключает на резервный и наоборот.
Можно использовать в кроне.

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Как реализовать работу скрипта по конфигу ?

Непрочитанное сообщение kpp » 2011-06-02 12:48:28

2 sudoroot Это к чему? :shock:
Топиком не ошиблись?
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

sudoroot
проходил мимо
Сообщения: 3
Зарегистрирован: 2011-06-02 12:02:01

Re: Как реализовать работу скрипта по конфигу ?

Непрочитанное сообщение sudoroot » 2011-06-02 13:05:47

2 kpp, прошу прощения, действительно ошибся. И удалить свое сообщение нет возможности =(

FiL
ст. лейтенант
Сообщения: 1374
Зарегистрирован: 2010-02-05 0:21:40

Re: Как реализовать работу скрипта по конфигу ?

Непрочитанное сообщение FiL » 2011-06-07 23:20:32

Kazak писал(а):
Alex Keda писал(а):и что именно у вас не получается?
Хочу понять принцип, как реализовать проход по файлу. чтобы скрипт читал первое значение опеределяя его как нужную опцию конфига, и вторую как занчение которое нужно использовать
например:
Test.cfg

Код: Выделить всё

Enabled=1
Job=/tmp/test.job
Schedule=/tmp/job.sched
hostname=example.test.com
Скрипт читает, опеределяет переменные, определяет их значения и выполняет работу.

Код: Выделить всё

#! /bin/bash

. /etc/Test.cfg

[ "${Enabled}" = "0" ] && exit

hostname ${hostname}
ну и так далее....

chim
проходил мимо

Re: Как реализовать работу скрипта по конфигу ?

Непрочитанное сообщение chim » 2011-08-07 20:21:10

не майте дурью. этот скрипт уже есть. называется puppet. делает всё что требуется и даже больше.