Страница 1 из 1
Как управлять состоянием lte1 в зависимости от ether1 и ether2?
Добавлено: 16 авг 2021, 23:19
Glass
Как сделать, чтобы
если ether1 и ether2 ушли в down - выполнилась команда "/interface lte set lte1 enable=yes"
а если хотя бы один интерфейс ether1 или ether2 поднялся - "/interface lte set lte1 disable=yes"
Правильнее было бы контролировать не просто ли поднялся интерфейс на порту, а работает ли интернет на нём и только в этом случае гасить lte1, но меня устроит и такой костыль.
Роутер HEX S (RB760iGS), FW 6.46.8
Re: Как управлять состоянием lte1 в зависимости от ether1 и ether2?
Добавлено: 16 авг 2021, 23:41
xvo
Скрипт написать, который будет делать вот буквально то, что вы обрисовали:
Пинговать какие-то несколько хостов, через каждый из двух каналов.
Если lte выключен - тогда если оба пинга безуспешны - поднимать lte, если же пинг хотя бы через один есть - ничего не делать.
Если lte включен - тогда если хотя бы один из пингов успешен - тушить lte, если оба мимо - ничего не делать.
Re: Как управлять состоянием lte1 в зависимости от ether1 и ether2?
Добавлено: 17 авг 2021, 01:17
Glass
Как получить состояние интерфейса lte lte1 в переменную? Что-то, не получается никак. Максимум, чего я добился - это:
[admin@MikroTik] > /interface lte print
Flags: X - disabled, R - running
0 X name="lte1" mtu=1500 mac-address=XX:XX:XX:XX:XX:XX
Re: Как управлять состоянием lte1 в зависимости от ether1 и ether2?
Добавлено: 17 авг 2021, 01:25
xvo
Что подразумевается под состоянием?
:local ltestate [/interface lte get [find where name=lte1] disabled]
:local ltestate [/interface lte get [find where name=lte1] running]
Re: Как управлять состоянием lte1 в зависимости от ether1 и ether2?
Добавлено: 22 авг 2021, 02:18
Glass
Код: Выделить всё
:local ScriptName "EnableLTE"
:if ([:len [system script job find where script=$ScriptName]] > 1) do={
:log info ("$ScriptName - script still active. Termination of another execution.")
end
}
:local PingCount 3
:local google "8.8.4.4"
:local yandex "77.88.8.8"
:local almatel "195.98.160.26"
:local WAN1 false
:local WAN2 false
:local ltestate [/interface lte get [find where name=lte1] running]
:if ([/interface get [/interface find name="ether1"] running]) do={
:local ResultGoogle [/ping count=$PingCount $google interface=ether1]
:local ResultYandex [/ping count=$PingCount $yandex interface=ether1]
:set WAN1 ($ResultGoogle+$ResultYandex >= 3)
}
:if ($WAN1=false) do={
:if ([/interface get [/interface find name="ether2"] running]) do={
:local ResultAlmatel [/ping count=$PingCount $almatel interface=ether2]
:local ResultYandex [/ping count=$PingCount $yandex interface=ether2]
:set WAN2 ($ResultAlmatel+$ResultYandex >= 3)
}
}
if ($ltestate=false and $WAN1=false and $WAN2=false) do={
/interface lte set lte1 disable=no
:beep fr=880 le=1; :delay 0.5; :beep fr=440 le=1; :delay 0.2; :beep fr=220 le=1; :delay 0.1;
:log info "LTE enabled by script $ScriptName"
}
if ($ltestate=true and ($WAN1=true or $WAN2=true)) do={
/interface lte set lte1 disable=yes
:beep fr=220 le=1; :delay 0.5; :beep fr=440 le=1; :delay 0.2; :beep fr=880 le=1; :delay 0.1;
:log info "LTE disabled by script $ScriptName"
}
Скрипт запускается раз в минуту.
WAN1 - основной, "быстрый" интерфейс. WAN2 - запасной. LTE - должен просыпаться только когда в очередной раз обесточится оборудование провайдеров.
Маршруты на WAN1/WAN2 переключаются Netwatch'ем, IP 8.8.4.4 доступен только через ether1, поэтому при проверке ether2 использую другой адрес.
На всякий случай скриптом пингую по 2 разных IP.
Я не управляю маршрутами usb модема, т.к. как только я его подключил, проводной интернет отвалился.
Я решил воспользоваться этим фактом и скриптом просто включаю или выключаю lte. Больше ничего не трогаю, всё работает.
Может, это и не по фэншую, но не хочется время тратить на это.
Держать его включённым постоянно нерентабельно из-за тарифа 70₽. в сутки при условии использования.
В скрипте стоит что-то поправить?
Re: Как управлять состоянием lte1 в зависимости от ether1 и ether2?
Добавлено: 22 авг 2021, 03:08
xvo
Glass писал(а): ↑22 авг 2021, 02:18
Я не управляю маршрутами usb модема, т.к. как только я его подключил, проводной интернет отвалился.
Ну тут достаточно, чтобы дистанс у дефолтного маршрута через модем был меньше (видимо так оно и есть).
/interface lte set lte1 disabled=no
и
/interface lte set lte1 disabled=yes
Re: Как управлять состоянием lte1 в зависимости от ether1 и ether2?
Добавлено: 22 авг 2021, 03:19
Glass
Понял, команду исправил. Спасибо.
Re: Как управлять состоянием lte1 в зависимости от ether1 и ether2?
Добавлено: 05 сен 2021, 02:23
Glass
Как правильно отключить USB модем при перезагрузке?
При ребуте модем успевает отправить/принять пакеты и баланс за этот день уменьшается на 70₽.
Если поставить в расписание задание с запуском по startup - "/interface lte set lte1 disabled=yes" не случится так, что интерфейс ещё не успеет обнаружиться и команда не сработает?
Стоит ли добавить что-то типа /system routerboard usb power-reset duration=15s ?