Рестарт IPSec и привязанных к нему программ при дисконнекте

bash, perl, python и прочие интерпретируемые скрипты

Модератор: Gen1us2k

Ответить
Аватара пользователя
Raven
Бородатый сис
Бородатый сис
Сообщения: 2787
Зарегистрирован: 03 мар 2010, 15:12
ОС: RHEL 7
Откуда: Из серверной

Рестарт IPSec и привязанных к нему программ при дисконнекте

Сообщение Raven » 13 сен 2010, 11:38

В общем, камрады, возникла необходимость в скрипте, который бы проверял соединение по IPSec - тунннелю и в случае его разрыва автоматически перезапускал бы его и привязанные к нему службы. Был придуман вариант построенный на основе скрипта перезапуска PPPoE, но он оказался неработоспособен.

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

#!/bin/bash

RACOON=/usr/sbin/racoon
SETKEY=/usr/local/bin/setkey.rules
CLEAR=/usr/local/bin/clear.sh
START=/usr/local/bin/start.sh

while test 1
do
PING=`ping -c 4 10.0.0.2` 
ret=$?
if [ "$ret" -ne "1" ]; then
echo `date` ", Normal!" > /dev/null 2>&1
fi
if [ "$ret" -ne "0" ]; then
echo `date` ", IPSec connection fail!" >> /var/log/ipsec.log
killall python java racoon
${RACOON} | ${SETKEY}
sleep 2m
${CLEAR}	
sleep 5m
killall java
${START}
fi
sleep 10m
done
Проблема в следующем:
1 - После ${RACOON} | ${SETKEY} необходима повторная проверка соединения. Если результат проверки положительный, связь есть - запускаем ${CLEAR}, если нет возвращаемся к запуску ${RACOON} | ${SETKEY} и повторяем проверку пингом.
2 - Скрипт /usr/local/bin/clear.sh не умеет останавливаться, вручную отключается посредством Ctrl+C, и по этой причине скрипт не имеет продолжения после ${CLEAR}. Надо придумать как его убивать через 5 минут работы. Может кто в курсе как обойти траблу.
Я не злопамятный, я просто часто ковыряю логи
Изображение
Аватара пользователя
Gen1us2k
Модератор
Модератор
Сообщения: 771
Зарегистрирован: 02 мар 2010, 16:13

Re: Рестарт IPSec и привязанных к нему программ при дисконне

Сообщение Gen1us2k » 13 сен 2010, 23:49

Raven
После ${RACOON} | ${SETKEY} необходима повторная проверка соединения. Если результат проверки положительный, связь есть - запускаем ${CLEAR},

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

ping $host -c 3 
ret=$?
if [ "$ret" -e "0" ]; then
${CLEAR}
else
${RACOON} | ${SETKEY}
fi
чото тип этого... додумать надо...
2 - Скрипт /usr/local/bin/clear.sh не умеет останавливаться, вручную отключается посредством Ctrl+C, и по этой причине скрипт не имеет продолжения после ${CLEAR}. Надо придумать как его убивать через 5 минут работы. Может кто в курсе как обойти траблу.

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

screen -AmdS clear /usr/local/bin/clear.sh
sleep 5m
kill -9 `screen -ls | grep De | grep clear | awk -F . '{ print $1 }'`
додумывать надо.. щас не могу... щас спать
Изображение
Home: Windows Heaven
Home: Debian 6
For Servers: Debian || RHEL Based || Gentoo || FreeBSD
Аватара пользователя
Raven
Бородатый сис
Бородатый сис
Сообщения: 2787
Зарегистрирован: 03 мар 2010, 15:12
ОС: RHEL 7
Откуда: Из серверной

Re: Рестарт IPSec и привязанных к нему программ при дисконне

Сообщение Raven » 14 сен 2010, 10:14

Gen1us2k
Спасибо, попробую. А по поводу screen то тут уже нашлось решение - поскольку данный скрипт будет юзаться под сусями, а там есть startproc.
Я не злопамятный, я просто часто ковыряю логи
Изображение
Ответить

Вернуться в «Скрипты»