Как сделать, чтобы
если 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
Как управлять состоянием lte1 в зависимости от ether1 и ether2?
-
- Сообщения: 4204
- Зарегистрирован: 25 фев 2018, 22:41
- Откуда: Москва
Скрипт написать, который будет делать вот буквально то, что вы обрисовали:
Пинговать какие-то несколько хостов, через каждый из двух каналов.
Если lte выключен - тогда если оба пинга безуспешны - поднимать lte, если же пинг хотя бы через один есть - ничего не делать.
Если lte включен - тогда если хотя бы один из пингов успешен - тушить lte, если оба мимо - ничего не делать.
Пинговать какие-то несколько хостов, через каждый из двух каналов.
Если lte выключен - тогда если оба пинга безуспешны - поднимать lte, если же пинг хотя бы через один есть - ничего не делать.
Если lte включен - тогда если хотя бы один из пингов успешен - тушить lte, если оба мимо - ничего не делать.
Telegram: @thexvo
-
- Сообщения: 7
- Зарегистрирован: 06 авг 2021, 23:31
Как получить состояние интерфейса 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
[admin@MikroTik] > /interface lte print
Flags: X - disabled, R - running
0 X name="lte1" mtu=1500 mac-address=XX:XX:XX:XX:XX:XX
[hEX S]
-
- Сообщения: 4204
- Зарегистрирован: 25 фев 2018, 22:41
- Откуда: Москва
Что подразумевается под состоянием?
:local ltestate [/interface lte get [find where name=lte1] disabled]
:local ltestate [/interface lte get [find where name=lte1] running]
:local ltestate [/interface lte get [find where name=lte1] disabled]
:local ltestate [/interface lte get [find where name=lte1] running]
Telegram: @thexvo
-
- Сообщения: 7
- Зарегистрирован: 06 авг 2021, 23:31
Код: Выделить всё
: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₽. в сутки при условии использования.
В скрипте стоит что-то поправить?
Последний раз редактировалось Glass 22 авг 2021, 04:21, всего редактировалось 1 раз.
[hEX S]
-
- Сообщения: 4204
- Зарегистрирован: 25 фев 2018, 22:41
- Откуда: Москва
Ну тут достаточно, чтобы дистанс у дефолтного маршрута через модем был меньше (видимо так оно и есть).
/interface lte set lte1 disabled=no
и
/interface lte set lte1 disabled=yes
Telegram: @thexvo
-
- Сообщения: 7
- Зарегистрирован: 06 авг 2021, 23:31
Понял, команду исправил. Спасибо.
[hEX S]
-
- Сообщения: 7
- Зарегистрирован: 06 авг 2021, 23:31
Как правильно отключить USB модем при перезагрузке?
При ребуте модем успевает отправить/принять пакеты и баланс за этот день уменьшается на 70₽.
Если поставить в расписание задание с запуском по startup - "/interface lte set lte1 disabled=yes" не случится так, что интерфейс ещё не успеет обнаружиться и команда не сработает?
Стоит ли добавить что-то типа /system routerboard usb power-reset duration=15s ?
При ребуте модем успевает отправить/принять пакеты и баланс за этот день уменьшается на 70₽.
Если поставить в расписание задание с запуском по startup - "/interface lte set lte1 disabled=yes" не случится так, что интерфейс ещё не успеет обнаружиться и команда не сработает?
Стоит ли добавить что-то типа /system routerboard usb power-reset duration=15s ?
[hEX S]