Страница 1 из 2
Помогите с скриптом
Добавлено: 19 авг 2015, 13:59
evgeniy7676
как изменить скрипт чтобы пинговались несколько хостов
:local PingCount 5;
:local CheckIp1 208.67.222.222;
:local CheckIp2 208.67.220.220;
:local isp1 [/ping $CheckIp1 count=$PingCount];
:local isp2 [/ping $CheckIp2 count=$PingCount];
:if (($isp1=0) && ($isp2=$PingCount) && ($BackGw=true)) do={
Добавлено:
Для каждого провайдера
Re: Помогите с скриптом
Добавлено: 19 авг 2015, 14:04
vqd
Ну если красиво то помести хосты в массив и пинговать потом попорядку.
Ну либо делайте что то типа
:local CheckIp1 208.67.222.222;
:local CheckIp2 208.67.220.220;
:local isp1Ip1 [/ping $CheckIp1 count=$PingCount];
:local isp1Ip2 [/ping $CheckIp2 count=$PingCount];
Ну и далее условие
Но учтите что данный скрипт довольно кривой и требует допиливания напильником конфига микрота
Re: Помогите с скриптом
Добавлено: 19 авг 2015, 14:09
evgeniy7676
а как условие будет выглядеть
Re: Помогите с скриптом
Добавлено: 19 авг 2015, 14:12
vqd
еще так можно
:local isp1 ([/ping $CheckIp1 count=$PingCount] + [/ping $CheckIp2 count=$PingCount]);
Re: Помогите с скриптом
Добавлено: 19 авг 2015, 14:14
evgeniy7676
У меня этот отлично работает нужно доработать чтобы по 2 хоста пинговал
:local PingCount 5;
:local CheckIp1 208.67.222.222;
:local CheckIp2 208.67.220.220;
:local eTo "admin@i.com";
:local rName [/system identity get name];
:local rDate [/system clock get date];
:local rTime [/system clock get time];
:local eSubj ($rName . " " . $rDate . " " . $rTime);
:local isp1 [/ping $CheckIp1 count=$PingCount];
:local isp2 [/ping $CheckIp2 count=$PingCount];
:local BackGw [/ip route get [find comment="gw2"] disable];
#if main ISP is DOWN and backup ISP is UP then:
:if (($isp1=0) && ($isp2=$PingCount) && ($BackGw=true)) do={
:log warning "Set routes to backup ISP";
/ip route disable [find comment="gw1"];
/ip route enable [find comment="gw2"];
/ip ipsec installed-sa flush;
/tool e-mail send to=$eTo subject=($eSubj . " Main ISP is DOWN") body="Set routes to backup ISP";
}
:local MainGw [/ip route get [find comment="gw1"] disable];
#if main ISP is UP then:
:if (($isp1=$PingCount) && ($MainGw=true)) do={
:log warning "Set routes to main ISP";
/ip route enable [find comment="gw1"];
/ip route disable [find comment="gw2"];
/ip ipsec installed-sa flush;
/tool e-mail send to=$eTo subject=($eSubj . " Main ISP is UP") body="Set routes to main ISP";
}
Re: Помогите с скриптом
Добавлено: 19 авг 2015, 14:16
vqd
для последнего вариант
:if ($isp1 = 0) do={/log warning "ISP1 DOWN"}
:if ($isp1 = 10) do={/log warning "ISP1 UP"}
Но условия будут постоянно гадить в лог, поэтому стоит использовать флаги типа:
:global OldIsp1
:global OldIsp2
.....
:if (($isp1 = 0) and ($OldIsp1 != $isp1)) do={/log warning "ISP1 DOWN"}
:if (($isp1 = 10) and ($OldIsp2 != $isp2)) do={/log warning "ISP1 UP"}
:set OldIsp1 $isp1
:set OldIsp2 $isp2
Таким образом событие отработает 1 раз
Re: Помогите с скриптом
Добавлено: 19 авг 2015, 14:21
vqd
Ну я же говорил что скрипт кривой )))
Сильно не вникал но видится мне что если дергануть пачкорд из микрота скрипт не увидит упавшего канала.
А дальше надо весь конфиг смотреть
Re: Помогите с скриптом
Добавлено: 19 авг 2015, 14:32
evgeniy7676
а где можно посмотреть на новую и желательно с маркировкой маршрутов
Re: Помогите с скриптом
Добавлено: 19 авг 2015, 14:38
vqd
evgeniy7676 писал(а):а где можно посмотреть на новую и желательно с маркировкой маршрутов
Посмотреть можно заказав мне данный скрипт.
С маркировкой можно так
:global googleM1 [ping 8.8.8.8 count=5 routing-table=lte1]
Re: Помогите с скриптом
Добавлено: 19 авг 2015, 17:59
KARaS'b
вот этим чудом, которое мне состряпали здесь же, на форуме, пинговал два хоста и проверял аптайм микротика
Код: Выделить всё
:local PingCount 3;
:local One xxx.xxx.xxx.xxx;
:local Too xxx.xxx.xxx.xxx;
:local ResultOne [/ping count=$PingCount $One interface=ether1];
:local ResultToo [/ping count=$PingCount $Too interface=ether1];
:local Uptime [/system resource get uptime];
:if ($ResultOne=0 && $ResultToo=0 && $Uptime>00:05:00) do={/system shutdown}