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

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

Добавлено: 19 апр 2023, 11:34
yreks
Привет всем.
Случается , по неизвестной причине порт на микротике сваливается из 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";
}
Изображение

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

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

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

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

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

Добавлено: 20 апр 2023, 07:23
bst-botsman
yreks писал(а): 19 апр 2023, 11:34

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

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

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

Добавлено: 20 апр 2023, 15:19
yreks

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

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

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

Добавлено: 21 апр 2023, 11:51
-13-
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")
ну или новые имена присвойте

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

Добавлено: 21 апр 2023, 13:13
yreks
[/quote]

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

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

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


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