|
|
<HTML> <HEAD> <TITLE> Monitor </TITLE> <SCRIPT LANGUAGE="VBSCRIPT">
CONST CONST_REBOOT_FORCE = 6 CONST CONST_REBOOT_NOFORCE = 2
Dim theService Dim theEventsService Dim theLocator Dim theEventsWindow
Dim theCDSink Dim theCPUSink Dim theBoxSink
Dim memoryInfo Dim cpuInfo Dim cdromInfo Dim diskInfo Dim MyMapiSession
' Initialize Globals Sub window_onLoad() memoryInfo = "" cpuInfo = "" cdromInfo = "" diskInfo = "" 'Set MyMapiSession = CreateObject("MSMAPI.MAPISession") 'MyMapiSession.SignOn
set theCDSink = CreateObject("WbemScripting.SWbemSink") set theCPUSink = CreateObject("WbemScripting.SWbemSink") set theBoxSink = CreateObject("WbemScripting.SWbemSink")
alert("Done init")
End Sub
Sub SoundAlarm
' Start a couple of services Set theLocalService = theLocator.ConnectServer theLocalService.Security_.impersonationLevel = 3 Dim classObject Set classObject = theLocalService.Get ( "Win32_Process" )
Dim intProcessId Dim intStatus
intStatus = classObject.Create("c:\winnt\system32\wbem\sound.exe", null, null, intProcessId)
End Sub
Sub RebootMachine theEventsWindow.value = theEventsWindow.value & "Reboot Machine Called" On Error Resume Next for each machine in theService.InstancesOf ("Win32_OperatingSystem") theEventsWindow.value = theEventsWindow.value & "Trying reboot on " & machine.Path_path machine.Win32ShutDown 6 If Err <> 0 Then theEventsWindow.value = "CreateObject Error : " & Err.Description End if next
End Sub
Sub Sendmail ( Subject , Message )
' ' Send a mail message using mapi '
Dim mapiMessages Set mapiMessages = CreateObject("MSMAPI.MAPIMessages") mapiMessages.SessionID = MyMapiSession.SessionID mapiMessages.Compose mapiMessages.RecipDisplayName = "Steve Menzies" mapiMessages.RecipAddress = "stevm" mapiMessages.AddressResolveUI = True mapiMessages.ResolveName mapiMessages.MsgSubject = Subject mapiMessages.MsgNoteText = Message mapiMessages.Send False
' MyMapiSession.SignOff
End Sub
' ' Gets machine info and starts monitoring ' Sub GetMachineInfo() On Error Resume Next
' Set globals Set theEventsWindow = Document.all("EventsWindow") theEventsWindow.value = "EventsWindow"
' Create the Locator Set theLocator = CreateObject("WbemScripting.SWbemLocator") If Err <> 0 Then theEventsWindow.value = "CreateObject Error : " & Err.Description End if
' Start a couple of services Set theService = theLocator.ConnectServer( Machine.Value, "root\cimv2", "redmond\stevm", "wmidemo_2000") If Err <> 0 Then theEventsWindow.value = theEventsWindow.value & "ConnectServer Error : " & Err.Description End if theService.Security_.impersonationLevel = 3
Set theEventsService = theLocator.ConnectServer( Machine.value, "root\cimv2", "redmond\stevm", "wmidemo_2000") If Err <> 0 Then theEventsWindow.value = theEventsWindow.value & "ConnectServer for events service Error : " & Err.Description End if theEventsService.Security_.impersonationLevel = 3
' Get the information 'GetCPUInfo 'GetMemoryInfo 'GetDiskInfo 'GetCDROMInfo StartMonitoring
End Sub
Sub ShowCD On Error Resume Next Dim theImage Set theImage = document.all("theCDROM") theImage.height = 200 theImage.width = 200 End Sub
Sub HideCD On Error Resume Next Dim theImage Set theImage = document.all("theCDROM") theImage.height = 0 theImage.width = 0 End Sub
Sub OpenBox On Error Resume Next Dim theImage Set theImage = document.all("theBoard") theImage.src = "mboardCool.jpg" Sendmail "Machine Opened!", "The box of the machine outsoft9.dns.microsoft.com has been opened!" SoundAlarm End Sub
Sub CloseBox On Error Resume Next Dim theImage Set theImage = document.all("theBoard") theImage.src = "computer.jpg" Sendmail "Machine Closed!" , "The box of the machine outsoft9.dns.microsoft.com has been closed!" End Sub
Sub MakeCold On Error Resume Next Dim theImage Set theImage = document.all("theBoard") theImage.src = "mboardCool.jpg" Sendmail "Machine temperature back to normal!", "The motherboard of the machine outsoft9.dns.microsoft.com has returned to normal temperature!" End Sub
Sub MakeHotter On Error Resume Next Dim theImage Set theImage = document.all("theBoard") theImage.src = "mboardHot.jpg" End Sub
Sub MakeHottest On Error Resume Next Dim theImage Set theImage = document.all("theBoard") theImage.src = "mboardHottest.jpg" Sendmail "Machine temperature at ABNORMAL level!", "The motherboard of the machine outsoft9.dns.microsoft.com has gone beyond the threshold of 35 Degrees Centigrade!" SoundAlarm End Sub
' ' Gets information about the processors ' Sub GetCPUInfo() On Error Resume Next cpuInfo = "" i = 0 for each Processor in theService.InstancesOf ("Win32_Processor") cpuInfo = cpuInfo & Chr(13) & Processor.Name & " Revision: " & Processor.Revision cpuInfo = cpuInfo & Chr(13) & "DeviceID: " & Processor.DeviceID cpuInfo = cpuInfo & Chr(13) & "Description: " & Processor.Description cpuInfo = cpuInfo & Chr(13) & "AddressWidth: " & Processor.AddressWidth cpuInfo = cpuInfo & Chr(13) & "DataWidth: " & Processor.DataWidth cpuInfo = cpuInfo & Chr(13) & "CurrentClockSpeed: " & Processor.CurrentClockSpeed i = i+1 next cpuInfo = "Number of Processors = " & i & cpuInfo End Sub
' ' Gets information about the memory ' Sub GetMemoryInfo() memoryInfo = "" On Error Resume Next i = 0 for each Mem in theService.InstancesOf ("win32_logicalMemoryConfiguration") memoryInfo = memoryInfo & "Total Physical Memory: " & Mem.TotalPhysicalMemory & " Kilo Bytes" i = i+1 next End Sub
' ' Gets information about the cdrom drive ' Sub GetCDROMInfo() On Error Resume Next cdromInfo = "" i = 0 for each Drive in theService.InstancesOf ("Win32_CDRomDrive") cdromInfo = cdromInfo & Chr(13) & "DeviceID: " & Drive.DeviceID cdromInfo = cdromInfo & Chr(13) & "Description: " & Drive.Description cdromInfo = cdromInfo & Chr(13) & "Caption: " & Drive.Caption cdromInfo = cdromInfo & Chr(13) & "MediaType: " & Drive.MediaType cdromInfo = cdromInfo & Chr(13) & "Manufacturer: " & Drive.Manufacturer cdromInfo = cdromInfo & Chr(13) & "MediaLoaded: " & Drive.MediaLoaded if Drive.MediaLoaded then ShowCD cdromInfo = cdromInfo & Chr(13) & "VolumeName: " & Drive.VolumeName end if i = i + 1 next cdromInfo = "Number of CDROM drives = " & i & cdromInfo End Sub
' ' Gets information about the disks ' Sub GetDiskInfo() On Error Resume Next diskInfo = "" i = 0 for each Drive in theService.InstancesOf ("Win32_DiskDrive") diskInfo = diskInfo & Chr(13) & "DeviceID: " & Drive.DeviceID diskInfo = diskInfo & Chr(13) & "Description: " & Drive.Description diskInfo = diskInfo & Chr(13) & "Caption: " & Drive.Caption diskInfo = diskInfo & Chr(13) & "Size: " & Drive.Size diskInfo = diskInfo & Chr(13) & "BytesPerSector: " & Drive.BytesPerSector diskInfo = diskInfo & Chr(13) & "SectorsPerTrack: " & Drive.SectorsPerTrack diskInfo = diskInfo & Chr(13) & "InterfaceType: " & Drive.InterfaceType diskInfo = diskInfo & Chr(13) & "MediaType: " & Drive.MediaType diskInfo = diskInfo & Chr(13) & "Manufacturer: " & Drive.Manufacturer diskInfo = diskInfo & Chr(13) & "Number of partitions: " & Drive.Partitions diskInfo = diskInfo & Chr(13) & "TotalCylinders: " & Drive.TotalCylinders diskInfo = diskInfo & Chr(13) & "TotalHeads: " & Drive.TotalHeads diskInfo = diskInfo & Chr(13) & "TotalHeads: " & Drive.TotalHeads diskInfo = diskInfo & Chr(13) & "TracksPerCylinder: " & Drive.TracksPerCylinder i = i+1 next diskInfo = "Number of Disks = " & i & diskInfo End Sub
Sub StartMonitoring() On Error Resume Next If Err <> 0 Then theEventsWindow.Value = theEventsWindow.Value & "CreateObject WBEMSink Error : " & Err.Description End if
' Start the CD Monitor theEventsService.ExecNotificationQueryAsync theCDSink, _ "select * from __instanceModificationEvent within 1 where targetinstance isa 'win32_cdromDrive'"
If Err <> 0 Then theEventsWindow.Value = theEventsWindow.Value & "ExecQuery CDROM Drive Error : " & Err.Description End if
End Sub
Sub ShowInfo(theNum) Select Case theNum Case 1 MsgBox memoryInfo,,"Physical Memory Details" Case 2 MsgBox diskInfo,,"Physical Disk Details" Case 3 MsgBox cpuInfo,,"Processor Details" Case 4 MsgBox cdromInfo,,"CDROM Drive Details" End Select End Sub
</SCRIPT>
<SCRIPT FOR="theCDSink" EVENT="OnObjectReady(objObject, objAsyncContext)" LANGUAGE="VBScript"> ' theEventsWindow.Value = theEventsWindow.Value & "OnObjectReady CallBack Called: " & objObject.Path_.RelPath Set theChangedObject = objObject.Properties_("TargetInstance") If theChangedObject.Value.Properties_("MediaLoaded") = TRUE Then theEventsWindow.Value = theEventsWindow.Value & "OnObjectReady CallBack Called: Showing CD" ShowCD Else theEventsWindow.Value = theEventsWindow.Value & "OnObjectReady CallBack Called: Hiding CD" HideCD End If </SCRIPT>
<SCRIPT FOR="theBoxSink" EVENT="OnObjectReady(objObject, objAsyncContext)" LANGUAGE="VBScript"> ' theEventsWindow.Value = theEventsWindow.Value & "OnObjectReady CallBack Called: " & objObject.Path_.RelPath If objObject.Properties_("EventDescription") = 2 Then theEventsWindow.Value = theEventsWindow.Value & "OnObjectReady CallBack Called: Opening Box" OpenBox Else theEventsWindow.Value = theEventsWindow.Value & "OnObjectReady CallBack Called: ClosingBox" CloseBox End If </SCRIPT>
<SCRIPT FOR="theCPUSink" EVENT="OnObjectReady(objObject, objAsyncContext)" LANGUAGE="VBScript"> 'theEventsWindow.Value = theEventsWindow.Value & "OnObjectReady CallBack Called: " & objObject.Properties_("EventDescription") If objObject.Properties_("EventDescription") = 2 Then theEventsWindow.Value = theEventsWindow.Value & "OnObjectReady CallBack Called: Heatin up" MakeHottest Else theEventsWindow.Value = theEventsWindow.Value & "OnObjectReady CallBack Called: Cooling Down" MakeCold End If </SCRIPT>
</HEAD>
<BODY>
<LABEL FOR="Machine" ID="MachineLabel">MACHINE</LABEL> <INPUT TYPE="text" NAME="Machine" ID="Machine" SIZE=20 TITLE="The machine from which to get the hardware information"> </INPUT> <BUTTON NAME="MachineInfo" ID="MachineInfo" onClick=GetMachineInfo>Get Data</BUTTON> <BUTTON NAME="RebootButton" ID="RebootButton" onClick=RebootMachine>Shutdown Remote Machine</BUTTON>
<TEXTAREA ID="EventsWindow" ROWS=5 COLS=55>
</TEXTAREA>
<DIV> <IMG ID="theBoard" SRC="computer.jpg" USEMAP="#theMap" BORDER=0 WIDTH=450 HEIGHT=450> </IMG>
<MAP NAME="theMap" ID="theMap"> <AREA SHAPE=RECT ONCLICK="showInfo(1)" TITLE="Click Here to get Memory Information" COORDS="8,113,100,415"> <AREA SHAPE=RECT ONCLICK="showInfo(2)" TITLE="Click Here to get Disk Drive Information" COORDS="217,8,415,150"> <AREA SHAPE=RECT ONCLICK="showInfo(3)" TITLE="Click Here to get Processor Information" COORDS="100,113,213,415"> <AREA SHAPE=RECT ONCLICK="showInfo(4)" TITLE="Click Here to get CD ROM Information" COORDS="217,155,415,415"> </MAP>
<IMG ID="theCDROM" NAME=theCDROM SRC="cdrom.jpg" BORDER=0 WIDTH=0 HEIGHT=0></IMG> <DIV>
</BODY>
</HTML>
|