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

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

Moderator: Gen1us2k

Post Reply
User avatar
Raven
Бородатый сис
Бородатый сис
Posts: 2794
Joined: 03 Mar 2010, 15:12
ОС: RHEL 8
Location: Из серверной

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

Post by Raven » 13 Sep 2010, 11:38

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

Code: Select all

#!/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 минут работы. Может кто в курсе как обойти траблу.
Я не злопамятный, я просто часто ковыряю логи
User avatar
Gen1us2k
Модератор
Модератор
Posts: 771
Joined: 02 Mar 2010, 16:13

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

Post by Gen1us2k » 13 Sep 2010, 23:49

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

Code: Select all

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 минут работы. Может кто в курсе как обойти траблу.

Code: Select all

screen -AmdS clear /usr/local/bin/clear.sh
sleep 5m
kill -9 `screen -ls | grep De | grep clear | awk -F . '{ print $1 }'`
додумывать надо.. щас не могу... щас спать
Image
Home: Windows Heaven
Home: Debian 6
For Servers: Debian || RHEL Based || Gentoo || FreeBSD
User avatar
Raven
Бородатый сис
Бородатый сис
Posts: 2794
Joined: 03 Mar 2010, 15:12
ОС: RHEL 8
Location: Из серверной

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

Post by Raven » 14 Sep 2010, 10:14

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