скрипт

Автоматизация при помощи встроенного скриптового языка и RouterOS API
evgeniy7676
Сообщения: 58
Зарегистрирован: 19 май 2016, 14:52

скрипт

Сообщение evgeniy7676 »

:global testPrim
:global testRez
:global testPrimOld
:global testRezOld


:global yandexprim [ping [resolve ukr.net] count=3 routing-table=ISP1_rout interface=ISP1]
:global googleprim [ping [resolve google.com.ua] count=3 routing-table=ISP1_rout interface=ISP1]

:global yandexrez [ping [resolve ukr.net] count=3 routing-table=ISP2_rout interface=ISP2]
:global googlerez [ping [resolve google.com.ua] count=3 routing-table=ISP2_rout interface=ISP2]

if (($googleprim + $yandexprim) != 0) do={:set testPrim true} else={:set testPrim false}
if (($googlerez + $yandexrez ) != 0) do={:set testRez true} else={:set testRez false}

if (($testPrim = false) && ($testPrim != $testPrimOld)) do={


Помогите переделать скрипт чтобы проверять хосты несколько раз и после выполнять услувие
Аватара пользователя
Chupaka
Сообщения: 3856
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: скрипт

Сообщение Chupaka »

Что значит "несколько раз"? Текущие три раза - это не несколько? А сколько - несколько?

З.Ы. Нет смысла эти переменные делать глобальными, наверное.
evgeniy7676
Сообщения: 58
Зарегистрирован: 19 май 2016, 14:52

Re: скрипт

Сообщение evgeniy7676 »

в смысле много ложных срабатываний,может сделать чтобы выполнил 4 строки скрипт после через 10 сек еще раз повторил это и после выполнял условие
Аватара пользователя
Chupaka
Сообщения: 3856
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: скрипт

Сообщение Chupaka »

Можно count=3 увеличить. Но я не совсем понимаю, как у вас язык поворачивается назвать потерю шести пакетов к двум разным адресам "ложным срабатыванием" (sic!)
evgeniy7676 писал(а): 15 сен 2017, 10:45 может сделать чтобы выполнил 4 строки скрипт после через 10 сек еще раз повторил это и после выполнял условие

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

:global yandexprim1 [ping [resolve ukr.net] count=3 routing-table=ISP1_rout interface=ISP1]
:global googleprim1 [ping [resolve google.com.ua] count=3 routing-table=ISP1_rout interface=ISP1]

:delay 10s

:global yandexprim2 [ping [resolve ukr.net] count=3 routing-table=ISP1_rout interface=ISP1]
:global googleprim2 [ping [resolve google.com.ua] count=3 routing-table=ISP1_rout interface=ISP1]


if (($googleprim1 + $yandexprim1 + $googleprim2 + $yandexprim2) != 0) do={:set testPrim true} else={:set testPrim false}
evgeniy7676
Сообщения: 58
Зарегистрирован: 19 май 2016, 14:52

Re: скрипт

Сообщение evgeniy7676 »

Как переделать скрипт чтобы проверять интернет не через icmp , потому как провайдер отключает инет например за неуплату при этом разрешает протокол icmp
Аватара пользователя
Sir_Prikol
Сообщения: 560
Зарегистрирован: 14 апр 2018, 15:21
Откуда: СССР

Re: скрипт

Сообщение Sir_Prikol »

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

# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 23q
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:global OFFsite;
:local time [/system clock get time];
:local hour [:pick [/system clock get time] 0 2];
:if ($hour >= 8 and $hour <= 21)  do={
# domain.ru get http
:local result1 none;
:local result2 none;
:do {/tool fetch mode=http address="domain.ru" src-path="/23q.html" dst-path="/23q.html"
:delay 3;
:set result1 [/file get "23q.html" contents]
:delay 3;
/file remove "23q.html"} on-error={:log warning "domain.ru KAPUT"};
:delay 600;
:do {/tool fetch mode=http address="domain.ru" src-path="/23q.html" dst-path="/23q.html"
:delay 3;
:set result2 [/file get "23q.html" contents]
:delay 3;
/file remove "23q.html"} on-error={:log warning "domain.ru KAPUT"};
:if (($result1 = "none") and ($result2 = "none")) do={
:if ($OFFsite = yes) do={} else={
:local smtpserv [:resolve "smtp.yandex.ru"];
:local email "[email protected]";
:local pass 123456789;
/tool e-mail send server=$smtpserv port=587 user=$email password=$pass start-tls=yes to="[email protected]" cc="[email protected]" from=$email subject="567tyk86u89p6ee670 380666666666,380999999999" body="[SENDER]Domain[/SENDER][SMS]Site domain.ru OFF![/SMS]";
:set OFFsite yes}} else={:if ($OFFsite = no) do={} else={:set OFFsite no}}
};
Вроде так, проверяет сайт на доступность, если не может скачать то-что надо, значит интернета нет
Дома: CCR2004 (7-ISP(GPON)белый IP)
Аватара пользователя
Sir_Prikol
Сообщения: 560
Зарегистрирован: 14 апр 2018, 15:21
Откуда: СССР

Re: скрипт

Сообщение Sir_Prikol »

Но это должен быть свой домен где-то далеко, тогда всё будет в шоколаде.

оффтоп, а что, если отключили интернет за неуплату - в браузере не вывешивается инфа от провайдера?
Дома: CCR2004 (7-ISP(GPON)белый IP)
evgeniy7676
Сообщения: 58
Зарегистрирован: 19 май 2016, 14:52

Re: скрипт

Сообщение evgeniy7676 »

:do {/tool fetch url="http://httpstat.us/200" keep-result=no; :global prim "1"} on-error={:global prim "0"}

а как этот запрос послать через маркированный маршрут routing-table=ISP2_rout interface=ISP2
Аватара пользователя
Sir_Prikol
Сообщения: 560
Зарегистрирован: 14 апр 2018, 15:21
Откуда: СССР

Re: скрипт

Сообщение Sir_Prikol »

Сделать маршрут на домен с маркировковкой через определённый шлюз
Дома: CCR2004 (7-ISP(GPON)белый IP)
evgeniy7676
Сообщения: 58
Зарегистрирован: 19 май 2016, 14:52

Re: скрипт

Сообщение evgeniy7676 »

Хотелось отправлять по очереди то через первого прова то через второго
Аватара пользователя
Sir_Prikol
Сообщения: 560
Зарегистрирован: 14 апр 2018, 15:21
Откуда: СССР

Re: скрипт

Сообщение Sir_Prikol »

Подождите, вы же хотели, изначально, отправлять через ISP2, а теперь уже другое.

Будте любезны всю задачу, вместе с конфигом сети, в студию, а то телепаты в отпуске
Дома: CCR2004 (7-ISP(GPON)белый IP)
evgeniy7676
Сообщения: 58
Зарегистрирован: 19 май 2016, 14:52

Re: скрипт

Сообщение evgeniy7676 »

Конфиг скрипта на первой странице в начале темы ,все просто переключение маршрутов ,но не через проверку пингом а через http запрос, так как
провайдер при отключении инета за неуплату разрешает icmp трафик
Аватара пользователя
Sir_Prikol
Сообщения: 560
Зарегистрирован: 14 апр 2018, 15:21
Откуда: СССР

Re: скрипт

Сообщение Sir_Prikol »

Использовать 2 сайта дл проверки, вы-же даже в своём скрипте, разные сайты по разным маршрутам пингуете, так и здесь так-же
Дома: CCR2004 (7-ISP(GPON)белый IP)
Аватара пользователя
Sir_Prikol
Сообщения: 560
Зарегистрирован: 14 апр 2018, 15:21
Откуда: СССР

Re: скрипт

Сообщение Sir_Prikol »

И да, конфиг скрипта был на пинг, сейчас вы его переделали, один Бог и вы знаете как он сейчас выглядит
Дома: CCR2004 (7-ISP(GPON)белый IP)
evgeniy7676
Сообщения: 58
Зарегистрирован: 19 май 2016, 14:52

Re: скрипт

Сообщение evgeniy7676 »

Прошу помощи не знаю как переделать скрипт

хочу переделать строку
:global yandexprim1 [ping [resolve google.com] count=3 routing-table=ISP1_rout interface=ISP1]
:global yandexrez [ping [resolve google.com] count=3 routing-table=ISP2_rout interface=ISP2]

на новую, но не знаю как запрос отправить через маркированные маршруты двух ISP

:do {/tool fetch url="http://httpstat.us/200" keep-result=no; :global yandexprim1 "1"} on-error={:global yandexprim1 "0"}
:do {/tool fetch url="http://httpstat.us/200" keep-result=no; :global yandexrez "1"} on-error={:global yandexrez "0"}
Аватара пользователя
Sir_Prikol
Сообщения: 560
Зарегистрирован: 14 апр 2018, 15:21
Откуда: СССР

Re: скрипт

Сообщение Sir_Prikol »

Как вы себе представляете одновременную маркировку пакета для двух isp?
Проще тем-же скриптом перенастраивать маршруты для проверки
Я почему спрашиваю настройки сети, ТЕЛЕПАТОВ НЕТ! Как у вас реализован доступ в мир - неизвестно, что вы используете - неизвестно, чем каналы переключаете - неизвестно, как маршруты маркируете - то-же неизвестно. А гадание на кофейной гуще - извините, старенькие уже.
Дома: CCR2004 (7-ISP(GPON)белый IP)
evgeniy7676
Сообщения: 58
Зарегистрирован: 19 май 2016, 14:52

Re: скрипт

Сообщение evgeniy7676 »

Аватара пользователя
Chupaka
Сообщения: 3856
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: скрипт

Сообщение Chupaka »

Можно попробовать через указание src-address= в fetch, а в firewall mangle output помечать пакеты к серверу в зависимости от src-адреса нужной меткой.