這些指令碼範例可示範 SNMP API 的使用方法。這些範例都是以 JScript 寫成。
SnmpRqst.Initialize 方法會傳回 ComResult 物件,告知初始化是否成功。
此指令碼會使用 Failed 方法來偵測錯誤,並在初始化失敗時用 GetErrorMsg 記錄錯誤訊息:
var oSnmpRqst = new ActiveXObject("CoreAsp.SnmpRqst");
var nDeviceID = 150;
var oComResult = oSnmpRqst.Initialize(nDeviceID);
if (oComResult.Failed)
{
Context.LogMessage(oComResult.GetErrorMsg);
}
或者使用設備位址和 SNMP 認證 ID 進行初始化:
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);
}
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);
}
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"));
}
}
Note: 從 WhatsUp Gold v14 開始,您可使用內建的 SNMP Set 動作設定 SNMP 值。如需詳細資訊,請參閱使用 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);
}
另請參閱 |