Здравствуйте уважаемые лорчане! Имеется скрипт, но хотелось бы узнать у профессионалов, правильно ли он написан. И еще одна штука не понятна, как его зациклить, чтоб он работал постоянно. К примеру, стартует система, крон вызывает скрипт, и скрипт работает постоянно. Т.е после завершения скрипта, чтоб он по второму кругу прокручивался, и так до бесконечности.
Собственно суть скрипта: Скрипт проверки доступности источника, если источник недоступен, блокировать доступ к нему и проверять доступность на протяжении некоторого времени. Если источник стал доступен, осуществить контрольную проверку доступности на протяжении некоторого времени, если все ок, то снять блокировку. Схема работы: Отправляем 3 пинга источнику, если источник не ответил на 3 пинга, блокируем доступ к источнику по iptables, создаем файл-флаг и возвращаемся вначало (опять 3 пинга) и так ожидаем до полного ответа на все 3 пинга. Если источник ответил на 3 пинга, проверяем наличие файл флага, если флага нету, то начинаем все сначала, если файл флаг присутствует, то пингуем еще 120 раз (прим 2 минуты) если 120пингов успешны, снимаем блокировку, если 120 пингов не успешны, то возвращаемся в начало.
Сам скрипт: (проверьте плиз на правильность по вышеописанному)
#!/bin/sh
# Доступность этого хоста будет означать корректную работу оснвного источника
HOST="217.117.21.169"
# Файл-флаг. Появляется при переключении на резервный канал
LOCKFILE="/tmp/check_source.lock"
# Файл журнала
LOGFILE="/var/log/check_source.log"
# Пингуем проверочный хост
ping -I 217.74.21.189 -c 3 -n -q ${HOST} > /dev/null
# Если возникла ошибка (хост не доступен)
if [ $? -ne "0" ]; then
# Если нет файла-флага
if [ ! -f ${LOCKFILE} ]; then
# блокируем доступ по списку правил
iptables-resotre < /opt/iptables.block
# Создаём файл флаг
touch ${LOCKFILE}
# Делаем запись в файл журнала
echo `date +'%Y/%m/%d %H:%M:%S'` Source blocked >> ${LOGFILE}
fi
# Если же всё хорошо
else
# Если есть файл-флаг
if [ -f ${LOCKFILE} ]; then
# Пингуем еще 120 раз, если пинги проходят удачно, убираем блокировку
ping -I 217.74.21.189 -c 120 -n -q ${HOST} > /dev/null
if [ $? -ne "0" ]; then
iptables-restore < /opt/iptables.open
# Удаляем файл-флаг
rm -f ${LOCKFILE}
# Записываем событие в файл журнала
echo `date +'%Y/%m/%d %H:%M:%S'` Source deblocked >> ${LOGFILE}
fi
fi
Ну, и собственно вопрос, как его зациклить....