'-------------------------------------------------------------------------
' 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"