Страница 1 из 1

Help script

Добавлено: 16 мар 2023, 01:25
andrey.tretyakov
Прошу помощи в написании скрипта.
При недоступности хоста с ether1 надо менять up интерфейс в igmp-proxy на eoip-tunel1 и обратно, когда хост доступен.

Re: Help script

Добавлено: 16 мар 2023, 10:29
Sertik
Ну и пишите, чего там сложного ?

Пингуем Ваш хост через интерфейс ether1.
Если не доступен = выключаем ether1 и включаем eoip.
Переодически включаем Ether1 и запускаем всё с начала

Re: Help script

Добавлено: 16 мар 2023, 16:50
andrey.tretyakov
Интересует скрипт переключения именно в igmp-proxy

Re: Help script

Добавлено: 16 мар 2023, 18:17
podarok66
В idmp-routing два правила, одно из которых активно (disabled=no), а второе нет (disabled=yes). На каждом уникальный комментарий (в примере это Vasya и Petya). Пингуете нужный хост с заданной периодичностью. При недоступности срабатывает условие типа:

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

/routing igmp-proxy interface set [find comment=Vasya] disabled=yes;
/routing igmp-proxy interface set [find comment=Petya] disabled=no;
При появлении доступа срабатывают обратные правила.

Re: Help script

Добавлено: 16 мар 2023, 19:08
andrey.tretyakov
В том и дело, что даже 2 выключенных интерфейса с up-stream в системе не может быть.
Только один!
Автоматом хочу переключаться.
У меня ROS 7.5

Re: Help script

Добавлено: 16 мар 2023, 22:14
Sertik
Ну так можно держать в igmp-proxi одно правило, а по ситуации удалять его и добавлять другое, нужное и наоборот.

Re: Help script

Добавлено: 17 мар 2023, 18:40
podarok66
Да что ж вы дописать один аргумент не в состоянии?

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

/routing igmp-proxy interface set [find comment=Vasya] disabled=yes upstream=no; 
 /routing igmp-proxy interface set [find comment=Petya] disabled=no upstream=yes;

Re: Help script

Добавлено: 18 мар 2023, 00:37
Sheva
Не факт что сразу заработает, но при желании допилите.
https://chat.openai.com/chat дает такой ответ: Для реализации данного функционала необходимо написать скрипт на языке script MikroTik RouterOS.

Приведу пример такого скрипта:
---------------------------------------------------------------------------------------------------------------------
:local host "192.168.1.1" # IP-адрес хоста, который необходимо проверять
:local interface1 "ether1" # Имя интерфейса, который используется по умолчанию
:local interface2 "eoip-tunnel1" # Имя интерфейса, который будет использоваться при недоступности хоста

:while (true) do={
:if ([ping $host count=1] = 0) do={
# Хост недоступен, меняем интерфейсы
/interface igmp-proxy set [find name=igmp-proxy] interface=$interface2
/interface igmp-proxy set [find name=igmp-proxy] multicast-interfaces=$interface2
/log info "Switched to $interface2 interface"
} else={
# Хост доступен, возвращаем настройки
/interface igmp-proxy set [find name=igmp-proxy] interface=$interface1
/interface igmp-proxy set [find name=igmp-proxy] multicast-interfaces=$interface1
/log info "Switched to $interface1 interface"
}
# Пауза между проверками состояния хоста
/delay 10s
}
--------------------------------------------------------------------------------------------------------------------------
В данном скрипте используется бесконечный цикл, в котором осуществляется проверка доступности хоста через ping. Если хост недоступен, то настройки интерфейсов igmp-proxy изменяются на интерфейс interface2, если хост доступен - на интерфейс interface1. В лог-файл выводится информация о смене интерфейса.

После написания скрипта, необходимо сохранить его на MikroTik RouterOS и запустить. Для этого можно воспользоваться командой /system script add и /system scheduler add.

Пример команд для запуска скрипта:
---------------------------------------------------------------------------------------------------------------------------
/system script add name=switch-igmp-proxy source="`<вставить сюда содержимое скрипта>`"
/system scheduler add name=check-host interval=10s on-event=switch-igmp-proxy
----------------------------------------------------------------------------------------------------------------------------
Данный скрипт будет проверять доступность хоста каждые 10 секунд и менять настройки igmp-proxy в зависимости от его состояния.