Hi Guys,
I'm trying to get a script template I picked up on here working, but I'm having some trouble, and hoping someone can point it out. I'm a VBScript newbie, so I'm hoping the problem is obvious.
I can individually enter one of the options in the arguments field in Orion, but it prompts me for the other argument, since it requires both. Is there a separator to use between arguments, or how can I just manually define the search argument and filename within the script?
Any assistance would be appreciated.
Thanks.
'/file: [required] This is the UNC location for the file to be searched.
' ${Date} is a wildcard you can put anywhere in the filename to indicate the datestamp(current date) as part of the filename.
' * ${Date} must be used with strDateFormat!!
' Example: /file:"//myserver/myshare$/myfile.txt" or /file:"${IP}/myshare/myfile.txt"
'----------------------------------------------------------------------------------------------------------
'/search: [required] This is the string to be searched for in the filename.\
'Example: /search:"error" or /search:"failed"
'----------------------------------------------------------------------------------------------------------
'DateFormat: [only required if used with ${Date} in file] This is the configuration for the format your datestamps are in.
strDateFormat = "yyyy_mm_dd"
' Usage:
' yyyy - 4 digit year
' yy - 2 digit year
' mm - 2 digit month
' m - 1 digit month
' dd - 2 digit day
' d - 1 digit day
' Seperators: "-", ".", "_", "/"
'Example: strDateFormat = "mm-dd-yyyy" or strDateFormat = "yy_m_d"
'----------------------------------------------------------------------------------------------------------
'FailIf: [optional] Specify to fail the check if the search string is found or not found
strFailIf = "found"
' Usage:
' found
' not found
'Example: strFailIf = "found" or strFailIf = "not found"
'#############################################################
strFileName = Wscript.Arguments.Named("file") 'Get file name from argument
If strFileName = "" Then
Wscript.Echo "Message: You must specify a File Name like this: /file:""blah.txt"""
Wscript.Quit(4)
End If
strSearch = Wscript.Arguments.Named("error") 'Get search string form argument
If strSearch = "" Then
Wscript.Echo "Message: You must specify a string to search for like this: /search:""ERROR"""
Wscript.Quit(4)
End If
If strFailIf="" Then strFailIf="found" End If
If (strFailIf="found") Then
strFound=3
strNotFound=0
ElseIf (strFailIf="notfound" or strFailIf="not found") Then
strFound=0
strNotFound=3
Else
strFound=4
strNotFound=4
Wscript.Echo "Message: ERROR, set strFailIf"
Wscript.Quit(4)
End If
yyyy = Datepart("yyyy",Date())
yy = Right(yyyy, 2)
m = Datepart("m",Date())
mm = Right("0" & m, 2)
d = Datepart("d",Date())
dd = Right("0" & d, 2)
If (InStr(1,strFileName,"${Date}",1) <> 0 AND strDateFormat <> "") Then
strDateFormat = replace(strDateFormat, Space(1), " & Space(1) & ")
strDateFormat = replace(strDateFormat, "_", " & ""_"" & ")
strDateFormat = replace(strDateFormat, "/", " & ""/"" & ")
strDateFormat = replace(strDateFormat, "-", " & ""-"" & ")
strDateFormat = replace(strDateFormat, ".", " & ""."" & ")
strFileName = Replace(strFileName,"${Date}",eval(strDateFormat),1,-1,1)
Else
Wscript.Echo "Message: Error with ${Date} and strDateFormat. Please review instructions at top of script."
Wscript.Quit(4)
End If
strPattern = strSearch
Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
If Not objFSO.FolderExists("temp") Then
objFSO.CreateFolder("temp")
End If
PrevLogFile = "temp\" & strSearch & "-" & mm & "_" & dd-1 & "_" & yyyy & ".txt"
If objFSO.FileExists(PrevLogFile) Then
set objPrevLogFile = objFSO.GetFile(PrevLogFile)
objPrevLogFile.Delete
End If
PreviousFinds = 0
LogFile = "temp\" & strSearch & "-" & mm & "_" & dd & "_" & yyyy & ".txt"
If objFSO.FileExists(LogFile) Then
Set objLog = objFSO.OpenTextFile(LogFile,1, True)
If (IsEmpty(objLog) = True ) Then PreviousFinds = 0 End If
PreviousFinds = objLog.ReadAll
End If
If objFSO.FileExists( strFileName ) Then
Set objFile = objFSO.GetFile(strFileName)
If( IsEmpty( objFile ) = True ) Then
WScript.Echo "Message: OBJECT NOT INITIALIZED"
WScript.Echo "Statistic: 0"
WScript.Quit(4)
End If
else
WScript.Echo "Message: The file """ & strFileName & """ was not found!<BR>This could indicate that the file does not exist or you do not have the correct credentials for monitoring. <BR>"
WScript.Echo "Statistic: 0"
WScript.Quit(strNotFound)
End If
Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.Pattern = strPattern
objRegEx.IgnoreCase = True
Set objReadFile = objFSO.OpenTextFile(strFileName, ForReading)
x=1
Do Until objReadFile.AtEndOfStream
strSearchString = objReadFile.ReadLine
Set colMatches = objRegEx.Execute(strSearchString)
If colMatches.Count > 0 Then
For Each strMatch in colMatches
If int(x) > int(PreviousFinds) Then
Wscript.Echo "Statistic: " & PreviousFinds+1
Wscript.Echo "Message: New search for """ & strSearch & """ was found: " & strSearchString
Set objLog = objFSO.OpenTextFile(LogFile, 2, True)
objLog.WriteLine(PreviousFinds+1)
objLog.Close
Wscript.Quit(StrFound)
End If
x=x+1
Next
End If
Loop
If int(x) >1 Then
Wscript.Echo "Statistic: " & PreviousFinds
Wscript.Echo "Message: New search for """ & strSearch & """ was found, but previous searches did find """ & strSearch & """."
Wscript.Quit(StrFound)
End If
Wscript.Echo "Statistic: " & PreviousFinds
Wscript.Echo "Message: Search for """ & strSearch & """ was not found."
Wscript.Quit(strNotFound)
objReadFile.Close