Re: скрипт который переключает на резервный канал

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
rainva
проходил мимо
Сообщения: 2
Зарегистрирован: 2014-12-15 12:16:22

Re: скрипт который переключает на резервный канал

Непрочитанное сообщение rainva » 2014-12-15 12:19:34

Есть массив маршрутов до хоста. (пока их 2)

Пингуем хост, если пинг-ответ не приходит - меняем маршрут на следующий

Скрипт не работает(((( Помогите понять где ошибка.

@echo off
setlocal enabledelayedexpansion
rem :loop
rem echo 123
rem ping 192.168.22.1 -n 5 || Set /Answer="ALARM"
rem Goto :loop

set IP=192.168.22.14
set GW1=148
set GW2=253
set curGW=2
set /A GWIP=GW%curGW%
if %curGW%==1 (Set curGW=2) else (set curGW=1)

netstat -rn | find "22.0"
echo gw=%curGW% route add %GWIP%

echo %GWIP%
ping -n 3 %IP% || (
echo Change channel
echo channel=%curGW%
if %curGW%==1 (
Set curGW=2
) else (
Set curGW=1
)
set /A GWIP=GW%curGW%
echo gw=%curGW% route add %GWIP%
rem
rem
rem route delete 192.168.22.0

rem route delete 192.168.22.0
rem route add 192.168.22.0 mask 255.255.255.0 192.168.174.148
rem route add 192.168.22.0 mask 255.255.255.0 192.168.174.253
)
pause 0

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Neus
капитан
Сообщения: 1946
Зарегистрирован: 2008-09-08 21:59:56

Re: Re: скрипт который переключает на резервный канал

Непрочитанное сообщение Neus » 2014-12-15 14:59:24

бля писец...
чо такое set /A GWIP=GW%curGW%
Команда SET поддерживает два дополнительных ключа:

SET /A выражение
SET /P variable=[promptString]

Ключ /A указывает, что строка справа от знака равенства является числовым
выражением, значение которого вычисляется. Обработчик выражений очень
прост и поддерживает следующие операции, перечисленные в порядке убывания
приоритета:

() - группировка
! ~ - - унарные операторы
* / % - арифметические операторы
+ - - арифметические операторы
<< >> - двоичный сдвиг
& - двоичное И
^ - двоичное исключающее ИЛИ
| - двоичное ИЛИ
= *= /= %= += -= - присвоение
&= ^= |= <<= >>=
, - разделитель операторов
какое числовое выражение ты там вычисляешь?
то что ты имел ввиду делается так: set GWIP=!GW%curGW%!
далее:
1) ping -n 3 %IP% || (бла-бла-бла
бла-бла-бла тут будет выполнятся только если будет таймаут
а бывает что и отвечает сеть или хост не доступен, в этом случае пинг считает что ответ был и код ошибки будет 0
2) с иф работает через опу, вот так нормально: (адепты структурного программирования - не бейте, тут по-другому не работает) :)

Код: Выделить всё

@echo off
setlocal enabledelayedexpansion
set IP=1.1.1.1
set GW1=111
set GW2=222
set curGW=1
echo route del %GW1%
echo route del %GW2%
echo route add %GW1%
:loop
ping -n 1 %IP% || (
echo Change channel
goto %curGW%
:1
echo route del %GW1%
echo route add %GW2%
set curGW=2
goto end
:2
echo route del %GW2%
echo route add %GW1%
set curGW=1
)
:end
goto loop
endlocal
вместо эха воткни нормальные команды и ип со шлюзами тож свои подставь

rainva
проходил мимо
Сообщения: 2
Зарегистрирован: 2014-12-15 12:16:22

Re: Re: скрипт который переключает на резервный канал

Непрочитанное сообщение rainva » 2014-12-15 15:06:38

Благодарю! Вот посоветовали ещё такой вариант
ping провайдер1
if errorlevel 1 goto no_1
echo 1й канал работает, используем его
route change 0.0.0.0.0 mask 0.0.0.0 шлюз1
goto end
:no_1
ping провайдер2
if errorlevel 1 goto no_2
echo 2й канал работаюет, 1й мертвый, используем канал 2
route change 0.0.0.0.0 mask 0.0.0.0 шлюз2
goto end
:no_2
echo оба канала мертвые, ждем пока какой-нибудь поднимется
:end

Аватара пользователя
Neus
капитан
Сообщения: 1946
Зарегистрирован: 2008-09-08 21:59:56

Re: Re: скрипт который переключает на резервный канал

Непрочитанное сообщение Neus » 2014-12-15 15:30:08

фигня логика
так у тебя будет выполняться route change 0.0.0.0.0 mask 0.0.0.0 шлюзХ
когда надо и не надо

Аватара пользователя
Neus
капитан
Сообщения: 1946
Зарегистрирован: 2008-09-08 21:59:56

Re: Re: скрипт который переключает на резервный канал

Непрочитанное сообщение Neus » 2014-12-15 15:33:39

ну в случае переключения шлюза по-умолчанию будет так:

Код: Выделить всё

@echo off
setlocal enabledelayedexpansion
set IP=1.1.1.1
set GW1=111
set GW2=222
set curGW=1
echo route change %GW1%
:loop
ping -n 1 %IP% || (
echo Change channel
goto %curGW%
:1
echo route change %GW2%
set curGW=2
goto end
:2
echo route change %GW1%
set curGW=1
)
:end
goto loop
endlocal

Аватара пользователя
Neus
капитан
Сообщения: 1946
Зарегистрирован: 2008-09-08 21:59:56

Re: Re: скрипт который переключает на резервный канал

Непрочитанное сообщение Neus » 2014-12-15 15:39:26

у тебя винда 7-ка?
7-ка умеет юзать одновременно 2 впн-а
может и 2-а шлюза сама умеет