I tried this, but all I'm getting is:
[false]: 0.00GB of 0.00GB (NaN%) || [false]: 0.00GB of 0.00GB (NaN%) || [false]: 0.00GB of 0.00GB (NaN%) || [false]: 0.00GB of 0.00GB (NaN%) || [false]: 0.00GB of 0.00GB (NaN%) || [false]: 0.00GB of 0.00GB (NaN%) || [false]: 0.00GB of 0.00GB (NaN%) || [false]: 0.00GB of 0.00GB (NaN%)
Ideas?? I verified that the SNMP values for the storageDescr, etc., all match.
Pat Smith
System Administrator
Perceptive Software, Inc.
[EMAIL PROTECTED]
www.imagenow.com
+1 913 422 7525 corporate
+1 913 667 8809 direct
+1 913 422 3820 fax
+1 800 941 7460 toll-free
Be informed. Be connected. Be inspired.
NOTICE: If received in error, please destroy the message and notify sender. Sender does not waive confidentiality or privilege, and use is prohibited.
| "Rothfuss, Gregory"
<[EMAIL PROTECTED]>
Sent by: [EMAIL PROTECTED] 10/29/2008 08:16 AM
|
|
We changed this slightly to report more accurate drive information (hrStoreageSize or hrStorageUsed * hrStorageAllocationUnits gives size in bytes).
--------------------
//JScript
//Assumption: All instances between the first and last are valid (continuity)
//[EMAIL PROTECTED] and [EMAIL PROTECTED]
var oSnmpRqst = new ActiveXObject("CoreAsp.SnmpRqst");
var nDeviceID = Context.GetProperty("DeviceID");
var oResult = oSnmpRqst.Initialize(nDeviceID);
if (oResult.Failed)
{
Context.SetResult(1, "Initialization error " );
}
else
{
var sReturn = ""; //Good string to return
var sBadReturn = ""; //Bad string to return
var shrStorageDescr = "1.3.6.1.2.1.25.2.3.1.3."; //hrStorageDescr
var shrStorageAllocationUnits = "1.3.6.1.2.1.25.2.3.1.4."; //hrStorageAllocationUnits
var shrStorageSize = "1.3.6.1.2.1.25.2.3.1.5."; //hrStorageSize
var shrStorageUsed = "1.3.6.1.2.1.25.2.3.1.6."; //hrStorageUsed
var i = 1; //First instance
while(true) //Continue until we reach a non-existant instance
{
var shrDescr = oSnmpRqst.Get(shrStorageDescr + i); //hrStorageDescr per instance
var shrAUnits = oSnmpRqst.Get(shrStorageAllocationUnits + i); //hrStorageAllocationUnitse per instance
var shrSize = oSnmpRqst.Get(shrStorageSize + i); //hrStorageSize per instance
var shrUsed = oSnmpRqst.Get(shrStorageUsed + i); //hrStorageUsed per instance
if (shrDescr.Failed) //We hit an instance that doesn't exist, time to return a string
{
if(sBadReturn == "") //If there was no error
{
//Get the Open DB connection from the Context NameSpace
var oDb = Context.GetDB;
var sSql = "UPDATE Device SET sNote = '' WHERE nDeviceID = " + nDeviceID; //Clear the notes
var oRs = oDb.Execute(sSql);
Context.SetResult(0, sReturn); //Return our good string
}
else //Something went wrong
{
// Get the Open DB connection from the Context NameSpace
var oDb = Context.GetDB;
var sSql = "UPDATE Device SET sNote = '" + sBadReturn + "' WHERE nDeviceID = " + nDeviceID; //Note all bad drives
var oRs = oDb.Execute(sSql);
Context.SetResult(1, sBadReturn); //Return our bad string and notify What'sUp Gold
}
break; //Exit the loop
}
else //There are still instances
{
//hrStoreageSize or hrStorageUsed * hrStorageAllocationUnits gives size in bytes
iPercent = (parseInt(shrUsed) / parseInt(shrSize)) * 100; //Calculate the % of drive space
shrUsed = (shrUsed * shrAUnits) / 1073741824; //bytes to GB (shrUsed * shrAUnits) / (1024 * 1024 * 1024)
shrSize = (shrSize * shrAUnits) / 1073741824; //bytes to GB (shrSize * shrAUnits) / (1024 * 1024 * 1024)
if(iPercent >= 90) //Set the drive space percentage here (90 = 90%)
{
if(sBadReturn != "") //Formatting
sBadReturn = sBadReturn + " || "; //Formatting
sBadReturn = sBadReturn + "[" + shrDescr + "]: " + shrUsed.toFixed(2) + "GB of " + shrSize.toFixed(2) + "GB (" + iPercent.toFixed(1) + "%)";
}
if(sReturn != "") //Formatting
sReturn = sReturn + " || "; //Formatting
sReturn = sReturn + "[" + shrDescr + "]: " + shrUsed.toFixed(2) + "GB of " + shrSize.toFixed(2) + "GB (" + iPercent.toFixed(1) + "%)";
i++; //Move on to next instance
}
}
}
Semper-Fi
