BSDPORTAL.RU

На этом сайте обсуждаются вопросы использования ОС FreeBSD
 Портал  •  Статьи  •  Форум  •  Wiki  •  Поиск  •  FAQ  •  Обои  •   Официальная документация  •  Новые темы 

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
СообщениеДобавлено: Вт 27 апр, 2021 11:10 pm 
Не в сети

Зарегистрирован: Пт 04 мар, 2005 12:34 pm
Сообщения: 67
Пытаюсь запустить простенький файловер, есть небольшой, но с правильным алгоритмом определения падения канала, скрипт на шелле, с досадными ошибками синтаксиса, с которым не удается совладать.
Может кто сможет допилить до рабочего состояния, у меня в силу недостаточности познаний в криптинге не выходит.

Код:
#!/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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср 28 апр, 2021 9:03 am 
Не в сети

Зарегистрирован: Вс 05 июн, 2005 4:19 pm
Сообщения: 3173
Откуда: Мезозой Пангея
sysutils/monit

_________________
Ми можемо все - що здатні собі уявити!
uname -a
Linux nonamehost 5.14.0-1008-oem #8-Ubuntu SMP Wed Nov 10 11:22:41 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср 28 апр, 2021 9:42 am 
Не в сети

Зарегистрирован: Пт 04 мар, 2005 12:34 pm
Сообщения: 67
fidaj писал(а):
sysutils/monit

Это для нахождения нарушений к структуре скрипта?
Я прогонял скрипт через сервис shellcheck.net, но ясности не прибавило, там зависимость переменных и локализовать сбойное место (оно поди и не одно) не удалось.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср 28 апр, 2021 9:53 am 
Не в сети

Зарегистрирован: Вс 05 июн, 2005 4:19 pm
Сообщения: 3173
Откуда: Мезозой Пангея
это что бы не писать свои велосипеды - уже готовый, который можно настроить определять состояния каналов и выполнять по событиям определенные дальнейшие действия.

_________________
Ми можемо все - що здатні собі уявити!
uname -a
Linux nonamehost 5.14.0-1008-oem #8-Ubuntu SMP Wed Nov 10 11:22:41 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср 28 апр, 2021 10:00 am 
Не в сети

Зарегистрирован: Пт 04 мар, 2005 12:34 pm
Сообщения: 67
На старенькой фре его нет и из портов уже не внедрить.
Потом, какой алгоритм работы предлагаемого вами решения, используется ли проверка работоспособности канала за шлюзом провайдера, что является принципиальным?
Велосипед не так и плох, в рамках своего предназначения вполне сойдет как простейший файловер, только вот с синтаксисом проблема.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср 28 апр, 2021 10:07 am 
Не в сети

Зарегистрирован: Вс 05 июн, 2005 4:19 pm
Сообщения: 3173
Откуда: Мезозой Пангея
sysutils/monit/
Port Added: 2005-02-18 19:15:21

_________________
Ми можемо все - що здатні собі уявити!
uname -a
Linux nonamehost 5.14.0-1008-oem #8-Ubuntu SMP Wed Nov 10 11:22:41 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср 28 апр, 2021 11:33 am 
Не в сети

Зарегистрирован: Пт 04 мар, 2005 12:34 pm
Сообщения: 67
fidaj писал(а):
sysutils/monit/
Port Added: 2005-02-18 19:15:21

Вы не ответили по возможности проверять наличие связи за шлюзом провайдера и алгоритм работы предлагаемого порта.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср 28 апр, 2021 12:37 pm 
Не в сети

Зарегистрирован: Вс 05 июн, 2005 4:19 pm
Сообщения: 3173
Откуда: Мезозой Пангея
https://www.mmonit.com/monit/documentation/monit.html

_________________
Ми можемо все - що здатні собі уявити!
uname -a
Linux nonamehost 5.14.0-1008-oem #8-Ubuntu SMP Wed Nov 10 11:22:41 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср 28 апр, 2021 2:56 pm 
Не в сети

Зарегистрирован: Пт 04 мар, 2005 12:34 pm
Сообщения: 67
Не нахожу необходимого функционалу по файловеру изкоропки, если и можно использовать в ключе первоначального вопроса, то с ручными доработками, что равно рассматриваемому мною скрипту (с несложным алгоритмом работы).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Чт 29 апр, 2021 9:47 am 
Не в сети

Зарегистрирован: Пт 04 мар, 2005 12:34 pm
Сообщения: 67
Дополню, что скрипт оказался рабочий с минимальной правкой, меня смутил вышеупомянутый шеллчекер, выдававший несколько ошибок синтаксиса.
Далее уже столкнулся с иной проблемой, не связанной напрямую со скриптом, по неработоспособности днс после смены шлюза по умолчанию и вообще странным поведением системы, хотя используются днс-сервера как обоих провайдеров, так и публичные. Настроен кэширующий днс (named) для пользователей с указанием серверов днс в разделе forwarders в named.conf. Возможно, нужно не только менять шлюз по умолчанию на лету, но и после перезапускать службу сети и обновить таблицу маршрутизации через /etc/rc.d/netif restart && /etc/rc.d/routing restart. По мере времени и возможности предстоит разобраться.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Зарегистрированные пользователи: Bing [Bot], Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB
Яндекс.Метрика