Проблема в том, что невозможно установить переменную в Dude. Единственный выход – найти размер массива в iso.org.dod.internet.private.enterprises.mot.whispRoot.whispProducts.whispAps.whispLinkTable.whispLinkEntry.linkReRegCount.1, а затем организовать цикл (которого, кстати, тоже нет) по массиву значений… Эта функциональность действительно заиграла бы! Mikrotik! Можно построить серию условных операторов, но придётся максимально их увеличить и настроить так, чтобы они возвращали 1 даже если данного OID не существует. Например, каждый условный оператор, который не заканчивался ошибкой, вызывал бы другой условный оператор, можно было бы реализовать рекурсию на 10 уровней, чтобы отслеживать первые 10 подключений на точке доступа. Я бы очень осторожно относился к запуску подобного на сотнях точек доступа, потому что у Dude есть ограничение на количество условных операторов, которые он может обработать за единицу времени. Оно в районе 10 000, но я уже ломал свою конфигурацию Dude, перегрузив его слишком большим количеством условных операторов. Метод массива условных операторов "сломается", как только первый условный оператор прочитает значение больше 5, и он отправит вам письмо. Что вы будете делать, сбросить счетчик или пойти проведать обиженного беспроводного пользователя? Затем определите, работает ли их машина с перебоями? Если бы я собирался это строить (единственный способ, который кажется работающим без переменных), я бы начал примерно так...
Примечание: добавление 1 поддерживает код в работе, так как пустой OID возвращает "false", что останавливает выполнение последующего кода.
Тест 1 пользователь; if(oid(“linkReRegCount.1”)+1>6,“User 1 exceeds reasonable re-registration count”)
Тест 2 пользователя; if(oid(“linkReRegCount.1”)+1>6, if(oid(“linkReRegCount.2”)+1>6, ,“User 2 exceeds reasonable re-registration count”) ,“User 1 exceeds reasonable re-registration count”)
Тест 3 пользователя; if(oid(“linkReRegCount.1”)+1>6, if(oid(“linkReRegCount.2”)+1>6, if(oid(“linkReRegCount.3”)+1>6, ,“User 3 exceeds reasonable re-registration count”) ,“User 2 exceeds reasonable re-registration count”) ,“User 1 exceeds reasonable re-registration count”)
Тест 4 пользователя; if(oid(“linkReRegCount.1”)+1>6, if(oid(“linkReRegCount.2”)+1>6, if(oid(“linkReRegCount.3”)+1>6, if(oid(“linkReRegCount.4”)+1>6, ,“User 4 exceeds reasonable re-registration count”) ,“User 3 exceeds reasonable re-registration count”) ,“User 2 exceeds reasonable re-registration count”) ,“User 1 exceeds reasonable re-registration count”)
Просто сделайте это таким большим, каким вам нужно, а затем сделайте из этого функцию, а затем сделайте зонд, который вызывает эту функцию.
Функция... имя: reregchk9
if(oid(“linkReRegCount.1”)+1>6, if(oid(“linkReRegCount.2”)+1>6, if(oid(“linkReRegCount.3”)+1>6, if(oid(“linkReRegCount.4”)+1>6, if(oid(“linkReRegCount.5”)+1>6, if(oid(“linkReRegCount.6”)+1>6, if(oid(“linkReRegCount.7”)+1>6, if(oid(“linkReRegCount.8”)+1>6, if(oid(“linkReRegCount.9”)+1>6, ,“User 9 exceeds reasonable re-registration count”) ,“User 8 exceeds reasonable re-registration count”) ,“User 7 exceeds reasonable re-registration count”) ,“User 6 exceeds reasonable re-registration count”) ,“User 5 exceeds reasonable re-registration count”) ,“User 4 exceeds reasonable re-registration count”) ,“User 3 exceeds reasonable re-registration count”) ,“User 2 exceeds reasonable re-registration count”) ,“User 1 exceeds reasonable re-registration count”)
Зонд… В доступной строке зонда можно указать "1", но если вы используете автоматическое обнаружение, этот сервис будет добавлен ко всем устройствам автоматически. Попробуйте добавить что-то, что определяет, является ли устройство точкой доступа. if(oid"device type"=ap1200) - этот тип оператора в доступной строке нуждается в обширных тестах. В строке ошибки просто вызовите функцию. if(reregchk9(),“”,“something else went wrong”)
Графики – это боль, потому что вам не нужно строить последний прочитанное значение, и вам нужно вручную удалять построение графиков с каждого устройства, к которому вы добавляете зонд.
Примечание: замените linkReRegCount на весь OID.
Всего доброго, Лебовски
[Редактировано - орфография, грамматика и читабельность]