Эти примеры сценариев иллюстрируют использование SNMP API. Все эти примеры написаны на JScript.
Инициализация объекта SNMP с проверкой ошибок от ID устройства
Метод SnmpRqst.Initialize возвращает объект ComResult, извещающий об успехе или сбое инициализации.
Данный сценарий использует метод Сбой для определения ошибки и записывает сообщение об ошибке при помощи GetErrorMsg в случае сбоя инициализации:
var oSnmpRqst = new ActiveXObject("CoreAsp.SnmpRqst");
var nDeviceID = 150;
var oComResult = oSnmpRqst.Initialize(nDeviceID);
if (oComResult.Failed)
{
Context.LogMessage(oComResult.GetErrorMsg);
}
Альтернативно, инициализация при помощи адреса устройства и ID учетной записи SNMP:
var oSnmpRqst = new ActiveXObject("CoreAsp.SnmpRqst");
var sAddress = "192.168.3.1";
var nCredentialID = 1;
var oComResult = oSnmpRqst.Initialize2(sAddress, nCredentialID);
if (oComResult.Failed)
{
Context.LogMessage(oComResult.GetErrorMsg);
}
Отправьте стандартную функцию Get и запишите опрошенное значение.
var oSnmpRqst = new ActiveXObject("CoreAsp.SnmpRqst");
var nDeviceID = 150;
var oComResult = oSnmpRqst.Initialize(nDeviceID);
if (oComResult.Failed)
{
Context.LogMessage(oComResult.GetErrorMsg);
}
var oSnmpResponse = oSnmpRqst.Get("1.3.6.1.2.1.2.1.0");
if (oSnmpResponse.Failed)
{
Context.LogMessage("Failure. Error=" + oSnmpResponse.GetErrorMsg);
}
else
{
Context.LogMessage("Success. Polled " + oSnmpResponse.GetOid + ", got " + oSnmpResponse.GetValue);
}
Отправьте Get при помощи нестандартного порта и тайм-аута
var oSnmpRqst = new ActiveXObject("CoreAsp.SnmpRqst");
var nDeviceID = 150;
var oComResult = oSnmpRqst.Initialize(nDeviceID);
if (oComResult.Failed)
{
Context.LogMessage(oComResult.GetErrorMsg);
}
oComResult = oSnmpRqst.SetPort(1234);
oComResult = oSnmpRqst.SetTimeoutMs(5000); // 5 second timeout
var oSnmpResponse = oSnmpRqst.Get("1.3.6.1.2.1.2.1.0");
if (oSnmpResponse.Failed)
{
Context.LogMessage("Failure. Error=" + oSnmpResponse.GetErrorMsg);
}
else
{
Context.LogMessage("Success. Polled " + oSnmpResponse.GetOid + ", got " + oSnmpResponse.GetValue);
}
var oSnmpRqst = new ActiveXObject("CoreAsp.SnmpRqst");
var nDeviceID = 150;
var oComResult = oSnmpRqst.Initialize(nDeviceID);
if (oComResult.Failed)
{
Context.LogMessage(oComResult.GetErrorMsg);
}
var sOid = "1.3.6.1.2";
//get the next 10 objects
for (i=0; i<10; i++)
{
var oSnmpResponse = oSnmpRqst.GetNext(sOid);
if (oSnmpResponse.Failed)
{
Context.LogMessage("Failure. Error=" + oSnmpResponse.GetErrorMsg);
break;
}
else
{
sOid = oSnmpResponse.GetOid;
Context.LogMessage(sOid + "=" + oSnmpResponse.GetValue);
}
}
Считайте несколько объектов в одном запросе
var oSnmpRqst = new ActiveXObject("CoreAsp.SnmpRqst");
var nDeviceID = Context.GetProperty("DeviceID");
var oComResult = oSnmpRqst.Initialize(nDeviceID);
if (oComResult.Failed)
{
Context.LogMessage(oComResult.GetErrorMsg);
}
// Get three objects in one packet:
var oSnmpResponse = oSnmpRqst.GetMultiple("1.3.6.1.2.1.1.1.0,1.3.6.1.2.1.1.2.0,1.3.6.1.2.1.1.3.0");
if (oSnmpResponse.Failed)
{
Context.LogMessage("Failure. Error=" + oSnmpResponse.GetErrorMsg);
}
else
{
var sXML = oSnmpResponse.GetPayload;
var objXMLDocument = new ActiveXObject("Microsoft.XMLDOM");
objXMLDocument.async = false;
objXMLDocument.loadXML(sXML);
var oVarBinds = objXMLDocument.getElementsByTagName("SnmpVarBind");
// For each variable binding, log OID=VALUE
for (var i=0; i<oVarBinds.length; i++)
{
Context.LogMessage(oVarBinds(i).getAttribute("sOid") + "=" + oVarBinds(i).getAttribute("sValue"));
}
}
Перезагрузите устройство Cisco при помощи функции Set
Note: Начиная с WhatsUp Gold v14, значения SNMP можно устанавливать при помощи встроенного действия SNMP Set. Для получения дополнительной информации, смотрите Использование действия SNMP Set.
var oSnmpRqst = new ActiveXObject("CoreAsp.SnmpRqst");
var nDeviceID = 150;
var oComResult = oSnmpRqst.Initialize(nDeviceID);
if (oComResult.Failed)
{
Context.LogMessage(oComResult.GetErrorMsg);
}
var oSnmpResponse = oSnmpRqst.Set("1.3.6.1.4.1.9.2.9.9.0", 'i', 2); /* reload */
if (oSnmpResponse.Failed)
{
Context.LogMessage("Failure. Error=" + oSnmpResponse.GetErrorMsg);
}
else
{
Context.LogMessage("Success. Polled " + oSnmpResponse.GetOid + ", got " + oSnmpResponse.GetValue);
}
См. также |