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

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

Добавлено: 13 сен 2010, 11:38
Raven
В общем, камрады, возникла необходимость в скрипте, который бы проверял соединение по 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 минут работы. Может кто в курсе как обойти траблу.

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

Добавлено: 13 сен 2010, 23:49
Gen1us2k
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 }'`
додумывать надо.. щас не могу... щас спать

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

Добавлено: 14 сен 2010, 10:14
Raven
Gen1us2k
Спасибо, попробую. А по поводу screen то тут уже нашлось решение - поскольку данный скрипт будет юзаться под сусями, а там есть startproc.