All pastes #2056519 Raw Edit

Something

public text v1 · immutable
#2056519 ·published 2011-05-11 01:33 UTC
rendered paste body
'-------------------------------------------------------------------------
'					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"