Страница 1 из 1

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

Добавлено: 2011-05-23 11:27:03
Kazak
Необходимо написать скрипт который бы развертывал определенную связку, но проблема в том что он должен быть применим к разным системам, тоесть он должен читать определенные директивы из файла и вставлять их в конфигурационный файл развертываемой программы. У меня есть пара идей, но они довольно грубы... а хотелось бы по человечески. Помогите пожалуйста кто в силах.

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

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

Добавлено: 2011-05-23 19:04:18
Alex Keda
и что именно у вас не получается?

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

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

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

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

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

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

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

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

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

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

Добавлено: 2011-05-26 13:37:49
kpp
Проход по файлу :

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

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

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

IFS="${TEMP_IFS}"

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

Добавлено: 2011-05-27 17:15:00
Kazak
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
прямо в консоль приходит запрос авторизации
Вводится имя
Вводится пароль
Соглашаемся с не шифорованным паролем
ЧекАут закончен
Как автоматизировать этот процесс, нужно позарез.

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

Добавлено: 2011-05-27 22:44:48
kpp
Смотри /home/user/.subversion/servers

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

Добавлено: 2011-05-28 0:06:52
Гость
Как автоматизировать этот процесс, нужно позарез.
это не означает что нужно спамить по всем темам
только что бы вам срочно помогли

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

Добавлено: 2011-06-02 12:07:36
sudoroot

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

#!/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
Скрипт который проверяет актуальность основного канала и в случае отсутствия пинга, переключает на резервный и наоборот.
Можно использовать в кроне.

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

Добавлено: 2011-06-02 12:48:28
kpp
2 sudoroot Это к чему? :shock:
Топиком не ошиблись?

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

Добавлено: 2011-06-02 13:05:47
sudoroot
2 kpp, прошу прощения, действительно ошибся. И удалить свое сообщение нет возможности =(

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

Добавлено: 2011-06-07 23:20:32
FiL
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}
ну и так далее....

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

Добавлено: 2011-08-07 20:21:10
chim
не майте дурью. этот скрипт уже есть. называется puppet. делает всё что требуется и даже больше.