Примечание Данный пример приводится в целях иллюстрации, он не поддерживается. Техническая поддержка доступна для контекстного объекта, SNMP API и среды сценариев, но Ipswitch не предоставляет поддержку по JScript, VBScript или разработке и отладке мониторов и действий активного сценария. Для помощи по этому примеру или по написанию собственных сценариев, посетите сообщество пользователей WhatsUp Gold.
Активный монитор опрашивает объект MIB принтера для сбора данных об уровне чернил и расчета процента потребления чернил на принтере.
Активный монитор включает предупреждение, если потребление превышает значение, заданное в первой строке сценария.
Примечание Сценарий был протестирован на HP MIB.
Запустите инструмент SNMP MIB Walker, чтобы проверить OID двух опрошенных объектов и отрегулировать их экземпляр (1.1 в этом примере):
1.3.6.1.2.1.43.11.1.1.8.1.1 и 1.3.6.1.2.1.43.11.1.1.9.1.1.
Примечание Этот сценарий приводится только как пример кода. Для мониторинга принтеров используйте параметр Активный монитор принтера.
var nMarkerPercentUtilization = 70; // На этом принтере возникнет ошибка, если потребление чернил на принтере превысит это значение, заданное в %.
var oSnmpRqst = new ActiveXObject("CoreAsp.SnmpRqst");
var nDeviceID = Context.GetProperty("DeviceID");
var oComResult = oSnmpRqst.Initialize(nDeviceID);
if (oComResult.Failed) {
Context.SetResult(1, oComResult.GetErrorMsg);
}
else {
// опросить два счетчика
Context.LogMessage("Опросить максимальный уровень маркера");
var oResponse = oSnmpRqst.Get("1.3.6.1.2.1.43.11.1.1.8.1.1");
if (oResponse.Failed) {
Context.SetResult(1, oResponse.GetErrorMsg);
}
var prtMarkerSuppliesMaxCapacity = oResponse.GetValue;
Context.LogMessage("Success. Value=" + prtMarkerSuppliesMaxCapacity);
Context.LogMessage("Опрос текущего уровня маркера");
oResponse = oSnmpRqst.Get("1.3.6.1.2.1.43.11.1.1.9.1.1");
if (oResponse.Failed) {
Context.SetResult(1, oResponse.GetErrorMsg);
}
var prtMarkerSuppliesLevel = oResponse.GetValue;
Context.LogMessage("Success. Значение=" + prtMarkerSuppliesLevel);
var nPercentUtilization = 100 * prtMarkerSuppliesLevel / prtMarkerSuppliesMaxCapacity;
if (nPercentUtilization > nMarkerPercentUtilization) {
Context.SetResult(1, "Failure. Текущее использование (" + (nPercentUtilization + "%) превышает заданный порог (" + nMarkerPercentUtilization) + "%)");
}
else {
Context.SetResult(0, "Success. Текущее использование (" + (nPercentUtilization + "%) ниже заданного порога (" + nMarkerPercentUtilization) + "%)");
}
}