Помогите с скриптом

Раздел для тех, кто начинает знакомиться с MikroTik
Правила форума
Как правильно оформить вопрос.
Прежде чем начать настройку роутера, представьте, как это работает. Попробуйте почитать статьи об устройстве интернет-сетей. Убедитесь, что всё, что Вы задумали выполнимо вообще и на данном оборудовании в частности.
Не нужно изначально строить Наполеоновских планов. Попробуйте настроить простейшую конфигурацию, а усложнения добавлять в случае успеха постепенно.
Пожалуйста, не игнорируйте правила русского языка. Отсутствие знаков препинания и неграмотность автора топика для многих гуру достаточный повод проигнорировать топик вообще.

1. Назовите технологию подключения (динамический DHCP, L2TP, PPTP или что-то иное)
2. Изучите темку "Действия до настройки роутера".
viewtopic.php?f=15&t=2083
3. Настройте согласно выбранного Вами мануала
4. Дочитайте мануал до конца и без пропусков, в 70% случаев люди просто не до конца читают статью и пропускают важные моменты.
5. Если не получается, в Winbox открываем терминал и вбиваем там /export hide-sensitive. Результат в топик под кат, интимные подробности типа личных IP изменить на другие, пароль забить звездочками.
6. Нарисуйте Вашу сеть, рисунок (схему) сюда. На словах может быть одно, в действительности другое.
evgeniy7676
Сообщения: 41
Зарегистрирован: 29 апр 2014, 15:36

как изменить скрипт чтобы пинговались несколько хостов

: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={

Добавлено:
Для каждого провайдера


vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

Ну если красиво то помести хосты в массив и пинговать потом попорядку.

Ну либо делайте что то типа

:local CheckIp1 208.67.222.222;
:local CheckIp2 208.67.220.220;

:local isp1Ip1 [/ping $CheckIp1 count=$PingCount];
:local isp1Ip2 [/ping $CheckIp2 count=$PingCount];

Ну и далее условие

Но учтите что данный скрипт довольно кривой и требует допиливания напильником конфига микрота


Есть интересная задача и бюджет? http://mikrotik.site
evgeniy7676
Сообщения: 41
Зарегистрирован: 29 апр 2014, 15:36

а как условие будет выглядеть


vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

еще так можно
:local isp1 ([/ping $CheckIp1 count=$PingCount] + [/ping $CheckIp2 count=$PingCount]);


Есть интересная задача и бюджет? http://mikrotik.site
evgeniy7676
Сообщения: 41
Зарегистрирован: 29 апр 2014, 15:36

У меня этот отлично работает нужно доработать чтобы по 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";
}


vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

для последнего вариант

: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 раз


Есть интересная задача и бюджет? http://mikrotik.site
vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

Ну я же говорил что скрипт кривой )))

Сильно не вникал но видится мне что если дергануть пачкорд из микрота скрипт не увидит упавшего канала.


А дальше надо весь конфиг смотреть


Есть интересная задача и бюджет? http://mikrotik.site
evgeniy7676
Сообщения: 41
Зарегистрирован: 29 апр 2014, 15:36

а где можно посмотреть на новую и желательно с маркировкой маршрутов


vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

evgeniy7676 писал(а):а где можно посмотреть на новую и желательно с маркировкой маршрутов


Посмотреть можно заказав мне данный скрипт.

С маркировкой можно так

:global googleM1 [ping 8.8.8.8 count=5 routing-table=lte1]


Есть интересная задача и бюджет? http://mikrotik.site
KARaS'b
Сообщения: 1199
Зарегистрирован: 29 сен 2011, 09:16

вот этим чудом, которое мне состряпали здесь же, на форуме, пинговал два хоста и проверял аптайм микротика

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

: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}


Ответить