dhcp.vbs - vbscript script by ActiveXperts Software
dhcp.vbs checks for maximum number of IP addresses in use.
Use dhcp.vbs directly from ActiveXperts Network Monitor; in the Manager's 'Monitor' menu, select 'New Check (Script)' and select dhcp.vbs. Configure the required parameter, or press 'Load a working sample'.
In ActiveXperts Network Monitor, Administrators can use three different scripting languages: Powershell, VBScript and SSH.
dhcp.vbs script code
' /////////////////////////////////////////////////////////////////////////////// ' // ActiveXperts Network Monitor - VBScript based checks ' // For more information about ActiveXperts Network Monitor and VBScript, visit ' // http://www.activexperts.com/support/network-monitor/online/vbscript/ ' /////////////////////////////////////////////////////////////////////////////// Option Explicit ' Declaration of global variables Dim SYSDATA, SYSEXPLANATION ' SYSDATA is displayed in the 'Data' column in the Manager; SYSEXPLANATION in the 'LastResponse' column ' Constants - return values Const retvalUnknown = 1 ' ActiveXperts Network Monitor functions should always return True (-1, Success), False (0, Error) or retvalUnknown (1, Uncertain) ' // To test a function outside Network Monitor (e.g. using CSCRIPT from the ' // command line), remove the comment character (') in the following lines: ' Dim bResult ' bResult = CheckDhcpMaxInUse( "dell06", "192.168.31.0", 200 ) ' WScript.Echo "Return value: [" & bResult & "]" ' WScript.Echo "SYSDATA: [" & SYSDATA & "]" ' WScript.Echo "SYSEXPLANATION: [" & SYSEXPLANATION & "]" Function CheckDhcpMaxInUse( strDhcpServer, strSubnet, numMaxAllowed ) ' Description: ' Check for maximum number of IP addresses in use. ' Requires SNMP running on the DHCP server and monitoring system. ' This function uses ActiveXperts Network Component. ' ActiveXperts Network Component is automatically licensed when ActiveXperts Network Monitor is purchased ' For more information about ActiveXperts Network Component, see: www.activexperts.com/network-component ' Parameters: ' 1) strDhcpServer - Host name or IP address of the DHCP server ' 2) strSubnet - Subnet. ' 3) numMaxAllowed - maxmimum number of IP addresses allows ' Usage: ' CheckDhcpMaxInUse( "<Hostname | IP>", "x.x.x.x", <maximum value> ) ' Sample: ' CheckDhcpMaxInUse( "localhost", "192.168.31.0", 200 ) Dim strOID CheckDhcpMaxInUse = retvalUnknown ' Default return value, and will be shown as a yellow (uncertain) icon in the Manager SYSDATA = "" ' SYSDATA displayed in the 'Data' column in the Manager SYSEXPLANATION = "" ' SYSEXPLANATION displayed in the 'LastResponse' column in the Manager strOID = "1.3.6.1.4.1.311.1.3.2.1.1.2." & strSubnet If( Not checkDhcpValue( strDhcpServer, strOID, SYSDATA, SYSEXPLANATION ) ) Then CheckDhcpMaxInUse = retvalUnknown Exit Function End If SYSEXPLANATION = "IP's in use: [" & SYSDATA & "]" If( CInt( SYSDATA ) <= CInt( numMaxAllowed ) ) Then CheckDhcpMaxInUse = True Else CheckDhcpMaxInUse = False End If End Function ' ////////////////////////////////////////////////////////////////////////////// Function CheckDhcpMaxOffered( strDhcpServer, strSubnet, numMaxAllowed ) ' Description: ' Check for maximum number of IP addresses offered ' Requires SNMP running on the DHCP server and monitoring system. ' This function uses ActiveXperts Network Component. ' ActiveXperts Network Component is automatically licensed when ActiveXperts Network Monitor is purchased ' For more information about ActiveXperts Network Component, see: www.activexperts.com/network-component ' Parameters: ' 1) strDhcpServer - Host name or IP address of the DHCP server ' 2) strSubnet - Subnet. ' 3) numMaxAllowed - maxmimum number of IP addresses allows ' Usage: ' CheckDhcpMaxOffered( "<Hostname | IP>", "x.x.x.x", <maximum value> ) ' Sample: ' CheckDhcpMaxOffered( "localhost", "192.168.31.0", 5 ) Dim strOID CheckDhcpMaxOffered = retvalUnknown ' Default return value, and will be shown as a yellow (uncertain) icon in the Manager SYSDATA = "" ' SYSDATA displayed in the 'Data' column in the Manager SYSEXPLANATION = "" ' SYSEXPLANATION displayed in the 'LastResponse' column in the Manager strOID = "1.3.6.1.4.1.311.1.3.2.1.1.4." & strSubnet If( Not checkDhcpValue( strDhcpServer, strOID, SYSDATA, SYSEXPLANATION ) ) Then CheckDhcpMaxOffered= retvalUnknown Exit Function End If SYSEXPLANATION = "IP's offered: [" & SYSDATA & "]" If( CInt( SYSDATA ) <= CInt( numMaxAllowed ) ) Then CheckDhcpMaxOffered = True Else CheckDhcpMaxOffered = False End If End Function ' ////////////////////////////////////////////////////////////////////////////// Function CheckDhcpMinAvailable( strDhcpServer, strSubnet, numMinAvailable ) ' Description: ' Check for minimum number of IP addresses available. ' Requires SNMP running on the DHCP server and monitoring system. ' This function uses ActiveXperts Network Component. ' ActiveXperts Network Component is automatically licensed when ActiveXperts Network Monitor is purchased ' For more information about ActiveXperts Network Component, see: www.activexperts.com/network-component ' Parameters: ' 1) strDhcpServer - Host name or IP address of the DHCP server ' 2) strSubnet - Subnet. ' 3) numMaxAllowed - maxmimum number of IP addresses allows ' Usage: ' CheckDhcpMinAvailable( "<Hostname | IP>", "x.x.x.x", <maximum value> ) ' Sample: ' CheckDhcpMinAvailable( "localhost", "192.168.31.0", 10 ) Dim strOID CheckDhcpMinAvailable = retvalUnknown ' Default return value, and will be shown as a yellow (uncertain) icon in the Manager SYSDATA = "" ' SYSDATA displayed in the 'Data' column in the Manager SYSEXPLANATION = "" ' SYSEXPLANATION displayed in the 'LastResponse' column in the Manager strOID = "1.3.6.1.4.1.311.1.3.2.1.1.3." & strSubnet If( Not checkDhcpValue( strDhcpServer, strOID, SYSDATA, SYSEXPLANATION ) ) Then CheckDhcpMinAvailable = retvalUnknown Exit Function End If SYSEXPLANATION = "IP's available: [" & SYSDATA & "]" If( CInt( SYSDATA ) >= CInt( numMinAvailable ) ) Then CheckDhcpMinAvailable = True Else CheckDhcpMinAvailable = False End If End Function ' ////////////////////////////////////////////////////////////////////////////// ' // --- Private Functions section --- ' // Private functions names should start with a lower case character, so they ' // will not be listed in the Network Monitor's function browser. ' ////////////////////////////////////////////////////////////////////////////// Function checkDhcpValue( strHost, strOID, BYREF numSysData, BYREF strSysExplanation ) Dim objSnmpManager, objConstants, objSnmpObject, strCommunity checkDhcpValue = False ' Default return value numSysData = 0 ' Not used by this function strSysExplanation = "" ' Set initial value strCommunity = "public" ' Create instance of SNMP object Set objSnmpManager = CreateObject( "AxNetwork.SnmpManager" ) Set objConstants = CreateObject( "AxNetwork.NwConstants" ) ' Initialize SNMP object objSnmpManager.LogFile = "c:\temp\_log.log" objSnmpManager.ProtocolVersion = objConstants.nwSNMP_VERSION_V2C objSnmpManager.Initialize If( objSnmpManager.LastError <> 0 ) Then strSysExplanation = "Unable to initialize ActiveXperts Network Component SNMP object" checkDhcpValue = False Exit Function End If ' Open connection to (remote) SNMP agent objSnmpManager.Open strHost, strCommunity If( objSnmpManager.LastError <> 0 ) Then strSysExplanation = "Unable to connect to agent [" & strHost & "], community [" & strCommunity & "], error #" & objSnmpManager.LastError & ": " & objSnmpManager.GetErrorDescription( objSnmpManager.LastError ) checkDhcpValue = False Exit Function End If On Error Resume Next Set objSnmpObject = objSnmpManager.Get( strOID ) If( objSnmpManager.LastError <> 0 ) Then strSysExplanation = "Unable to retrieve [" & strOID & ", error #" & objSnmpManager.LastError & ": " & objSnmpManager.GetErrorDescription( objSnmpManager.LastError ) checkDhcpValue = False Exit Function End If On Error Goto 0 numSysData = objSnmpObject.Value strSysExplanation = "Value read: [" & objSnmpObject.Value & "]" checkDhcpValue = True ' Note: type ID's are described in ActiveXperts Network Component manual, and included in the ActiveXperts Network Component samples. objSnmpManager.Close() objSnmpManager.Shutdown() End Function