Страница 11 из 13
Re: оповещение в телегу
Добавлено: 18 июн 2023, 23:43
Mk51
Sheva писал(а): ↑18 июн 2023, 19:30
Так же была "хотелка" видеть новых клиентов сети в телеграме, получивших динамический IP от микротика. Реализовал без скрипта телеграм через DHCP Server / DHCP / deconf / Script:
Здравствуйте
А для статики как будет? Кроме else ветки главного условия.
Данный скрипт будет работать только в окружении dhcp сервера? Те нельзя как-то вытянуть другие данные с других таблиц, к примеру wifi? И лог не работает.
Код: Выделить всё
:local IpAdd [/ip dhcp-server lease get value-name=address number=[/ip dhcp-server lease find address=$leaseActIP]]
:local WI [/interface wireless registration-table get [find last-ip=$IpAdd] interface];
:log info ($WI);
Re: оповещение в телегу
Добавлено: 19 июн 2023, 07:59
Sheva
Mk51 писал(а): ↑18 июн 2023, 23:43
Здравствуйте
А для статики как будет? Кроме else ветки главного условия.
Данный скрипт будет работать только в окружении dhcp сервера? Те нельзя как-то вытянуть другие данные с других таблиц, к примеру wifi? И лог не работает.
Ну статика остается статикой, для меня не актуально смотреть на "дискотеку" в телеграме, а вот новые клиенты всегда видны и можно перевести их тоже в статику. Из других таблиц тоже можно "вытягивать", но у меня в микротике нет WiFi и мне не актуально. Обратитесь с кодом и хотелками к GPT чату, он поможет.
Re: оповещение в телегу
Добавлено: 05 сен 2023, 17:02
LANa
Создала по
гайду на официальном сайте failover переключение с основного провайдера на симку. Попробовала, всё отлично работает, а при переключении становится недоступным одно из nat правил маскарадинга, привязанного на определённый интерфейс, на который можно было бы подвесить скрипт проверки "отвалившегося" правила и отправлять уведомление в телегу о том, что произошло переключение на другого провайдера?
Я пока ещё не профи и только начала изучать Router OS, поэтому прошу помощи в скриптинге.
Re: оповещение в телегу
Добавлено: 06 сен 2023, 08:39
Sertik
На правило или интерфейс подвесить скрипт нельзя. Скрипт либо работает сам по себе из репозитория, либо может быть "подвешен" только к некоторым опциям, например DHCP-серверу или профилю VPN.
В Вашем случае проверять доступность Интернета через определённый интерфейс нужно пингом. Это избитая тема и скриптов было написано подобных тьма, легко гуглится.
Ну а профи тут вообще нет, профи работают в Микротик
Re: оповещение в телегу
Добавлено: 06 сен 2023, 10:26
LANa
Sertik писал(а): ↑06 сен 2023, 08:39
В Вашем случае проверять доступность Интернета через определённый интерфейс нужно пингом.
Как заставить скриптом пинговать действующий маршрут через необходимый интерфейс?
Re: оповещение в телегу
Добавлено: 06 сен 2023, 13:38
bst-botsman
LANa писал(а): ↑06 сен 2023, 10:26
Sertik писал(а): ↑06 сен 2023, 08:39
В Вашем случае проверять доступность Интернета через определённый интерфейс нужно пингом.
Как заставить скриптом пинговать действующий маршрут через необходимый интерфейс?
Коли уж выдергиваете фразу из контекста - то я Вам постараюсь ответить фразой уважаемого Sertik, которую Вы почему-то проигнорировали:
Sertik писал(а): ↑06 сен 2023, 08:39
Это избитая тема и скриптов было написано подобных тьма, легко гуглится.
Re: оповещение в телегу
Добавлено: 07 сен 2023, 09:40
LANa
Тут все такие отзывчивые, просто милашки, особенно джентльмен выше, пусть конкретно по делу ничего не скажут, зато советов надают... И вообще, чувствуется дружелюбная атмосфера, все готовы прийти новичку на помощь. ) По теме вопроса перелопатила документацию, глянула пару скриптов на официальном форме, после чего написала свой скрипт, it works like a charm!
Re: оповещение в телегу
Добавлено: 08 сен 2023, 16:17
Sertik
Как заставить скриптом пинговать действующий маршрут через необходимый интерфейс?
Обыкновенно, например так (маршрут должен быть меченым):
:local ping [/tool ping intherface=ether1 routing-mark="bla-bla" count=3]
глянула пару скриптов на официальном форме, после чего написала свой скрипт
Поделитесь опытом, будет интересно и полезно.
Re: оповещение в телегу
Добавлено: 12 сен 2023, 10:32
-13-
у себя делал резервирование через рекурсивную маршрутизацию, далее раз в минуту скриптами проверяю интерфейсы ISP, результаты которых пишутся в L7, если при очередной проверке результаты разняться отправляем оповещение в телегу
скрипты, возможно подкрутите под себя
Код: Выделить всё
# Name: fnListISP
# Description: get ISP name&status
:set $counter 0
/ip dhcp-client
:foreach ISP in=[find ~""] do={
:set $interfaceISP ([get $ISP]->"interface")
:set $nameISP ([get $ISP]->"comment")
:set $statusISP ([get $ISP]->"status")
:if (!any $statusISP) do={
:set $statusISP ([/interface ethernet monitor $interfaceISP once as-value]->"status")
}
:set $ipISP ([get $ISP]->"address")
:if (any $ipISP) do={
:set $ipISP [:pick $ipISP 0 [:find $ipISP "/"]]
} else={
:set $ipISP $statusISP
}
:set ($listISP->$counter) {name=$nameISP; status=$ipISP; interface=$interfaceISP}
:set $counter ($counter + 1)
}
:return $listISP
# End
Код: Выделить всё
# Name: -Check ISP
# Description: check ISP status
:global fnParse
:global tgSend
:set $dbCmd [[$fnParse script="dbCmd"]]
:set $myChat ($dbCmd->"myChat")
:set $myAlarmChat ($dbCmd->"myAlarmChat")
:set $syName ($dbCmd->"syName")
:set $cuDate ($dbCmd->"syClock"->"date")
:set $cuTime ($dbCmd->"syClock"->"time")
:set $cuWAN ($dbCmd->"cuWAN"->"comment")
:set $ISP [[$fnParse script="fnListISP"]]
:set $nameISP1 ($ISP->0->"name"); :set $cuISP1 ($ISP->0->"status")
:set $nameISP2 ($ISP->1->"name"); :set $cuISP2 ($ISP->1->"status")
:set $ISP1 [[$fnParse script="fnL7"]\
name=$nameISP1\
regexp=$cuISP1\
comment=($nameISP1 . " current status")]
:set $ISP2 [[$fnParse script="fnL7"]\
name=$nameISP2\
regexp=$cuISP2\
comment=($nameISP2 . " current status")]
:set $WAN [[$fnParse script="fnL7"]\
name="Route to WAN"\
regexp=$cuWAN\
comment=("Active route toWAN")]
:set $text ("$syName%0A\
$cuDate - $cuTime%0A\
any ISP change status%0A\
%0A")
:if (($ISP1 != $cuISP1) or ($ISP2 != $cuISP2) or ($WAN != $cuWAN)) do={
:if ($ISP1 != $cuISP1) do={
:set $text ($text . \
"$nameISP1: $cuISP1%0A\
old value: $ISP1%0A\
%0A")
/ip firewall layer7-protocol set [find comment ~ $nameISP1] regexp=$cuISP1
:if ($cuISP1 ~ "[0-9]") do={
:execute [[$fnParse script="fnYDNS"] cuISP1=$cuISP1]
}
}
:if ($ISP2 != $cuISP2) do={
:set $text ($text . \
"$nameISP2: $cuISP2%0A\
old value: $ISP2%0A\
%0A")
/ip firewall layer7-protocol set [find comment ~ $nameISP2] regexp=$cuISP2
}
:if ($WAN != $cuWAN) do={
:set $text ($text . \
"Route to WAN: $cuWAN%0A\
old value: $WAN%0A\
%0A")
/ip firewall layer7-protocol set [find comment="Active route toWAN"] regexp=$cuWAN
}
$tgSend chatid=$myChat text=$text
}
# End
Re: оповещение в телегу
Добавлено: 12 сен 2023, 20:02
Sertik
Я не понял скрипты выше выдернуты из контекста ? ибо где у Вас объявление переменных ?
Вы по старой привычке переменные не объявляете ?
Как это работает. Я не смог запустить ...