Все исполняемые файлы перечислены, если сделать snmpwalk по 1.3.6.1.2.1.25.4.2.1.2. Судя по всему, ты скопировал точно тот же OID, который использовал notepad в конкретный момент времени. Закрытие и повторное открытие notepad даст ему другой ID процесса и, соответственно, другой SNMP OID. Так что твоя проверка может свести тебя с ума.
Строка available не обязательно должна быть условием if. К тому же, if с возвращаемым значением «-1» при ошибке работает некорректно... в случае ошибки условие if должно возвращать 0, а не -1. Например: if(x, "", 0).
Строка available используется для определения, будет ли проверка автоматически установлена на устройстве (если это разрешено) с помощью автодетекта и также должна возвращать true, чтобы проверка считалась активной. Проблема в том, что многие делают ошибку в этой строке, и она никогда не становится false.
Это работает на версии 4.1 beta (должно работать и на 3.6)... Я не смог заставить проверку подняться просто повторным запуском, но закрытие и открытие notepad вызывало постоянное поднятие и падение проверки.
Вот хорошие строки для проверки без функции:
available: array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2",10,29), "notepad.exe")
Error: if(array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2",10,29), "notepad.exe")<>-1, "", "notepad не запущен")
Лучшие записи в available основаны на функциях. array_find — возвращает индекс в массиве элемента, который соответствует критериям, или -1, если не найден. (Первый параметр — массив, второй — искомый элемент). Так что, если notepad запущен, вы получите индекс массива, а не имя программы. Если не запущен — будет -1, поэтому просто проверяйте, что OID не равен -1.
Я также написал функцию и проверку для этого, но работает примерно так же. Хотя считаю, что это лучший способ сделать то, что тебе нужно.
Функция:
name: find_notepad
Description: Находит индекс массива для notepad или возвращает False
if(array_size(oid_column("1.3.6.1.2.1.25.4.2.1.2",10,29)), array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2",10,29), "notepad.exe"), "False")
Проверка:
Available: find_notepad()<>"False"
Error: if(find_notepad()<>"False", if(find_notepad()<>-1, "", "Внимание: notepad не запущен"), "Не удалось прочитать список запущенных программ")
Что я заметил — список запущенных приложений обновляется очень медленно. Если проверка падает, а ты запускаешь notepad, пройдет пара минут, прежде чем она поднимется, как бы ты ни строил проверку, потому что in SNMP он некоторое время не отображается.
Надеюсь, поможет, Lebowski.