Пытаюсь запустить простенький файловер, есть небольшой, но с правильным алгоритмом определения падения канала, скрипт на шелле, с досадными ошибками синтаксиса, с которым не удается совладать.
Может кто сможет допилить до рабочего состояния, у меня в силу недостаточности познаний в криптинге не выходит.
Код:
#!/bin/sh
LANG=ru_RU.KOI8-R; export LANG
MM_CHARSET=KOI8-R; export MM_CHARSET
# Основной оптика
GW1=10.0.0.2
# Резервный Радио
GW2=10.0.0.3
# Устанавливаем в переменную время и дату в нужном нам формате
DT=`date +"%T %d.%m.%Y"`
# Для проверки каналов интернет на работоспособность используем пинг на сервисы Yandex, разные IP для разных каналов
# вы можете использовать свои эталонные адреса для проверки
# Проверяем добавлены ли маршруты на эталонные IP для проверки, если нет, то добавляем
check_node=`netstat -rn | grep "77.88.8.1" | awk '{print $1}'`
if [ "$check_node" != "77.88.8.1" ]; then
# добавляем маршрут для Яндекса через оптику для проверки
/sbin/route add 77.88.8.8 $GW1
# через Радио
/sbin/route add 77.88.8.1 $GW2
else
fi
# Проверяем, если включен основной интернет и файл состояния установлен на резервный канал, то стираем файл состояния
# Такая ситуация может возникнуть, например, если сервер был на резервном и потом его резко выключили,
# А после включения опять включился основной канал (маршрут по-умолчанию)
check_gw=`netstat -rn | grep default | awk '{print $2}'`
if [ "$check_gw" = "10.0.0.2" ]; then
if [ -f /tmp/.inet_reserv_work ]; then
/bin/rm /tmp/.inet_reserv_work
/bin/echo Стираем файл .inet_reserv_work $DT, так как шлюз $GW1, а не резервный $GW2! >> /data/scripts/inet_change.log
else
fi
else
fi
# Проверяем работает ли основной канал
is=`/sbin/ping -c 7 77.88.8.8 | grep -c "64 bytes"`
if (/bin/test $is -gt "4") then
# Если основной канал работает и файл состояния резервного канала существует, то стираем файл состояния и переключаемся
# на основной канал, пишем запись в лог и отправляем письмо администратору о переключении
if [ -f /tmp/.inet_reserv_work ]; then
/sbin/route change default $GW1
/bin/rm /tmp/.inet_reserv_work
/bin/echo Основной канал [Оптика] включен $DT >> /data/scripts/inet_change.log
echo "$DT Переключились на Оптику" | mail -s "Интернет переключился" admin@admin.com -f root@admin.com
else
exit
fi
else
# Если основной не работает, то проверяем резервный и переключаемся на него
is2=`/sbin/ping -c 7 77.88.8.1 | grep -c "64 bytes"`
if (/bin/test $is -gt "4" || /bin/test $is2 -gt "4") then
if ! [ -f /tmp/.inet_reserv_work ]; then
/sbin/route change default $GW2
/usr/bin/touch /tmp/.inet_reserv_work
/bin/echo Резервный канал [Радио] включен $DT >> /data/scripts/inet_change.log
echo "$DT Переключились на Радио" | mail -s "Интернет переключился" admin@admin.com -f root@admin.com
fi
fi