'------------------------------------------------------------------------- ' Script Variables '------------------------------------------------------------------------- today = Date CurDate = Year(today) & "-" & Month(today) & "-" & Day(today) Dim logFile 'Log Name Dim objFSO 'File Object Dim logLocation 'Log Directory Dim verboselog verboselog = False 'Filter log output '------------------------------------------------------------------------- ' Regex Variables '------------------------------------------------------------------------- Dim SearchStrings(2) SearchStrings(0) = "Partition Write Pending Rate" SearchStrings(1) = "CTL Core Usage" SearchStrings(2) = "HDU Operating Rate" Set regex = new RegExp 'Create the RegExp object 'sortregex.Pattern = "(Partition Write Pending Rate)|(CTL Core Usage)|(HDU Operating Rate)" regex.Pattern = "Partition Write Pending Rate" regex.IgnoreCase = False 'Case sensitive Set objFSO = Wscript.CreateObject("Scripting.FileSystemObject") 'Create object for creating fs changes Set wshShell = Wscript.CreateObject("WScript.shell") 'Create object to run executables in logLocation = "C:\Script_Logs" '------------------------------------------------------------------------- ' Storage Array Variables '------------------------------------------------------------------------- Dim NumofCores Dim NameofSNM2 Dim TotalDisks Dim DiskRate() Dim CPURate() Dim CacheWait() Dim HighCpuRate Dim HighDiskRate Dim HighCacheWait Dim HighDiskHit Dim HighCpuHit Dim HighCacheHit Dim LocationOfAuOutput Dim HostGroupDef Dim HostGroupMap Dim PartList Dim UnitInfo Dim ArrayList HighCacheWait = 15 ' Cache Write Pending HighCacheHit = 0 ' Number of times max was hit. TotalCacheEntries = 0 ' Number of Cache Entries HighCpuRate = 50 ' CPU Usage % HighCpuHit = 0 ' Number of times max was hit. TotalCpuEntries = 0 ' Number of Cores / CPU Entries HighDiskRate = 70 ' Disk usage % HighDiskHit = 0 ' Number of times max was hit. TotalDiskEntries = 0 ' Number of Disk Entries LocationOfAuOutput = "C:\Documents and Settings\grhernandez\Desktop\Dale\Beta2\" HostGroupDef = "auhgdef.txt" HostGroupMap = "auhgmap.txt" PartList = "auparts.txt" UnitInfo = "auunitinfo.txt" ArrayList = "auunitref.txt" '------------------------------------------------------------------------- ' File Name and locations '------------------------------------------------------------------------- logFile = logLocation & "\Lun_Creation_Script-" & CurDate & ".log" '------------------------------------------------------------------------- ' Email Variables '------------------------------------------------------------------------- Dim SMTPServerinfo Dim MailFromName Dim MailToName Dim NotifyEvery SMTPServerinfo = "SMTP.DOMAIN.ORG" MailFromName = "Notifcation@no-reply.DOMAIN.org" MailToName = "USER1@DOMAIN.ORG;USER2@DOMAIN.ORG;USER3@DOMAIN.ORG" '------------------------------------------------------------------------- ' Functions '------------------------------------------------------------------------- Function SendEmail(TheTextBody, TheSubject) Set objEmail = CreateObject("CDO.Message") objEmail.From = MailFromName 'From Address objEmail.To = MailToName 'To Address objEmail.Subject = TheSubject 'Subject Line objEmail.Textbody = TheTextBody 'Body Text objEmail.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 'Send using Port objEmail.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = SMTPServerinfo 'SMTP Address objEmail.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 'Port to connect on objEmail.Configuration.Fields.Update 'Commit Changes. objEmail.Send 'Send email End Function Function CheckLogFolder() ' If folder doesnt exist, create it if not objFSO.FolderExists(logLocation) then set objFolder = objFSO.CreateFolder(logLocation) end If End Function 'Read configuration files. 'HostGroupDef = "auhgdef.txt" 'HostGroupMap = "auhgmap.txt" 'PartList = "auparts.txt" 'UnitInfo = "auunitinfo.txt" 'ArrayList = "auunitref.txt" '"CTL Partition Write Pending Rate(%)" 'CTL Core Usage 'HDU Operating Rate Function Parse_PFM_File(FileName) Set objReadPFM = objFSO.OpenTextFile(FileName, 1, false) Buffer = objReadPFM.ReadLine 'Cache line in temp variable Do until objReadPFM.AtEndOfStream = True 'If regex.Test(Buffer) = True Then 'We found one of the values to start processing. SearchStrings(0) = "Partition Write Pending Rate" SearchStrings(1) = "CTL Core Usage" SearchStrings(2) = "HDU Operating Rate" If InStr(Buffer, SearchStrings(0)) <> 0 Then Buffer = Parse_Write_Pending(objReadPFM) ElseIf InStr(Buffer, SearchStrings(1)) <> 0 Then Buffer = Parse_Core_Percentage(objReadPFM) ElseIf InStr(Buffer, SearchStrings(2)) <> 0 Then Buffer = Parse_Disk_Utilization(objReadPFM) Else Buffer = objReadPFM.ReadLine 'Cache line in temp variable End If Loop Set objReadPFM = Nothing End Function '--------------------------------------------------------- ' Parsing Functions '--------------------------------------------------------- Function Parse_Write_Pending(objReader) Line = objReader.ReadLine curBuffer = Clean_Extra_Delimiters(Split(Line, " ")) 'Tokenize line Do While Not InStr(Line, "CTL") <> 0 'Keep going until we run out of controllers If curBuffer(2) >= HighCacheWait Then HighCacheHit= HighCacheHit + 1 End If TotalCacheEntries = TotalCacheEntries + 1 Line = objReader.ReadLine curBuffer = Clean_Extra_Delimiters(Split(Line, " ")) 'Tokenize line Loop Parse_Write_Pending = Line End Function Function Parse_Core_Percentage(objReader) Line = objReader.ReadLine curBuffer = Clean_Extra_Delimiters(Split(Line, " ")) 'Tokenize line Do While Not InStr(Line, "CTL") <> 0 'Keep going until we run out of controllers If curBuffer(2) >= HighCpuRate Then HighCpuRate = HighCpuRate + 1 End If TotalCpuEntries = TotalCpuEntries + 1 Line = objReader.ReadLine curBuffer = Clean_Extra_Delimiters(Split(Line, " ")) 'Tokenize line Loop Parse_Core_Percentage = Line End Function Function Parse_Disk_Utilization(objReader) Line = objReader.ReadLine curBuffer = Clean_Extra_Delimiters(Split(Line, " ")) 'Tokenize line Do While Not InStr(Line, "CTL") <> 0 'Keep going until we run out of controllers If curBuffer(2) >= HighDiskRate Then HighDiskHit = HighDiskHit + 1 End If TotalDiskEntries = TotalDiskEntries + 1 Line = objReader.ReadLine curBuffer = Clean_Extra_Delimiters(Split(Line, " ")) 'Tokenize line Loop Parse_Core_Percentage = Line Loop End Function '--------------------------------------------------------- ' Support Functions '--------------------------------------------------------- 'Split does not handle Extra Delimiters, clean it. Function Clean_Extra_Delimiters(Split_Array) Dim New_Array() i=0 For Each str In Split_Array If Not str = "" Then ReDim Preserve New_Array(i) New_Array(i) = str i=i+1 End If Next Clean_Extra_Delimiters = New_Array End Function 'gunnings for crab cakes 'helmond 'in baltimore afgahny ' '----------------Code------------------ CheckLogFolder Set objlogFile = objFSO.CreateTextFile(logfile) Parse_PFM_File("C:\Documents and Settings\grhernandez\Desktop\Dale\Beta2\UNIT1\pfm00000.txt") MsgBox "ERR, EXCUSE MEH"