Скрипт проверки скорости порта и его перезапуска

Обсуждение ПО и его настройки
Ответить
yreks
Сообщения: 47
Зарегистрирован: 07 авг 2013, 09:42

Привет всем.
Случается , по неизвестной причине порт на микротике сваливается из 1Gb в 100mbt. Или из 100mbt в 10mbt. При этом падает пропускная способность порта а сам девайс остается в сети. Пингуется ... А о неисправности узнаеш только по звонку пользователей....
В неосяжном интернете нашел скрипт проверки скорости интерфейса. Доработал его под свои нужды, сделал уведомление на телеграмм. В принципе все заработало...
Скрипт один в раз в пять минут запускается, создает локальную переменную скорости порта, если скорость не соответсвует номинальной, перезапускает порт. И отправляет на телеграмм уведомление о скорости порта после его перезапуска... Но уведомление приходит с тем старым аварийным, значением скорости. Который был до перезапуска.
Возможно , локальная переменная монитора не обновляется? Пробовал ставить после перезапуска delay 20... Все равно скорость порта приходит старая...

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

#Получаем информацию об интерфейсе eth1-Local
:local info [/interface ethernet monitor eth1-Local once as-value];
#Присваиваем переменной $rate значение поля rate из массива данных
:local rate ($info->"rate")
#Выводим в лог информацию о скорости порта
:log info "Скорость интерфейса eth1-Local - $rate";
#Проверяем значение. Если скорость порта меньше 100Mbps - перезапускаем порт.
:if ($rate != "100Mbps") do={
:log info ("Скорость интерфейса eth1-Local меньше 100Mbps. Перезапускаем порт...");
/interface disable eth1-Local
/ delay 2s
/interface enable eth1-Local
/ delay 10s
:tool fetch url="https://api.telegram.org/bot14************text=760S+Port4- $rate" 
:log info "Скорость порта после перезапуска - $rate";
}
Изображение


bst-botsman
Сообщения: 219
Зарегистрирован: 13 окт 2018, 20:53
Откуда: Беларусь

yreks писал(а): 19 апр 2023, 11:34 Возможно , локальная переменная монитора не обновляется?
Я не силен в скриптах для микротика - но где Вы обновляете содержимое переменной после перезапуска порта???


RB3011UiAS x 1
RB4011iGS+5HacQ2HnD x 3
951Ui-2nD x 2
hAP ac^2 x 24
CheckPoint 1590 x 1
СКЗИ "BAS" x 1
yreks
Сообщения: 47
Зарегистрирован: 07 авг 2013, 09:42

bst-botsman писал(а): 19 апр 2023, 14:28
yreks писал(а): 19 апр 2023, 11:34 Возможно , локальная переменная монитора не обновляется?
Я не силен в скриптах для микротика - но где Вы обновляете содержимое переменной после перезапуска порта???
А как ее нужно обновить - повторно запустить?


bst-botsman
Сообщения: 219
Зарегистрирован: 13 окт 2018, 20:53
Откуда: Беларусь

yreks писал(а): 19 апр 2023, 11:34

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

#Присваиваем переменной $rate значение поля rate из массива данных
:local rate ($info->"rate")
}
Я ж говорю - в скриптах не силен... Но если правильно понимаю - этот код присваивает значение Вашей локальной переменной... Вот и выполняйте его после перезапуска интерфейса...


RB3011UiAS x 1
RB4011iGS+5HacQ2HnD x 3
951Ui-2nD x 2
hAP ac^2 x 24
CheckPoint 1590 x 1
СКЗИ "BAS" x 1
yreks
Сообщения: 47
Зарегистрирован: 07 авг 2013, 09:42

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

:local info [/interface ethernet monitor eth1-Local once as-value];
:local rate ($info->"rate")
Одной команды оказалось мало ... А две вроде заработали...
Одного только не пойму - месяц назад я пробовал подобное редактирование скрипта но получал ошибку - ответ с пустым значением...
А щас на тестовом микротике смоделировал и заработало...
Спасибо за совет.


-13-
Сообщения: 140
Зарегистрирован: 18 мар 2021, 12:45

yreks писал(а): 20 апр 2023, 15:19

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

:local info [/interface ethernet monitor eth1-Local once as-value];
:local rate ($info->"rate")
Одной команды оказалось мало ... А две вроде заработали...
Одного только не пойму - месяц назад я пробовал подобное редактирование скрипта но получал ошибку - ответ с пустым значением...
А щас на тестовом микротике смоделировал и заработало...
Спасибо за совет.
при повторной проверке используйте

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

:set $info [/interface ethernet monitor eth1-Local once as-value];
:set $rate ($info->"rate")
ну или новые имена присвойте


yreks
Сообщения: 47
Зарегистрирован: 07 авг 2013, 09:42

[/quote]

при повторной проверке используйте

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

:set $info [/interface ethernet monitor eth1-Local once as-value];
:set $rate ($info->"rate")
ну или новые имена присвойте
[/quote]


Спасибо за совет. Попробовал - все работает.


Ответить