I've been asked by a group of users if they can have a daily report of everything the fax server has sent. Since the fax software we're using doesn't have this feature, I thought I'd write some vb script to pull all of lines containing yesterday's date from the log file (called sendlog.txt) and email them to a public folder. This took an hour or so to create and looks like this:
[lang="vb"]Const ForReading = 1
Dim fso, TempFile, yesterday, strSubject
yesterday = Date - 1
Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.Pattern = yesterday
Set objFSO = CreateObject("Scripting.FileSystemObject")
If (objFSO.FileExists("C:\temp\output.txt")) Then
objFSO.DeleteFile "C:\temp\output.txt"
End If
Set objFile = objFSO.OpenTextFile("C:\Program Files\GFI\FaxMaker\sendlog.txt", ForReading)
Set TempFile = objFso.CreateTextFile("C:\Temp\output.txt", True)
Set wshShell = WScript.CreateObject ("WSCript.shell")
TempFile.Write "Fax Server sendlog for " & yesterday & vbCRLF & "----------------------------------" & vbCRLF & vbCRLF
Do Until objFile.AtEndOfStream
strSearchString = objFile.ReadLine
Set colMatches = objRegEx.Execute(strSearchString)
If colMatches.Count > 0 Then
For Each strMatch in colMatches
TempFile.Write strSearchString & vbCRLF
Next
End If
Loop
objFile.Close
TempFile.Close
strSubject = "FaxMaker_Sendlog_" & yesterday
wshShell.run "C:\monitoring\blat262\full\blat.exe" & " " & "C:\temp\output.txt" & " -to " & "myaddress@mydomain.com" & " -subject " & strSubject[/lang]
Partial credit goes to the MS Scripting Guy who had already published part of this for me. Also you'll notice I called blat to email the file, which is considerably less complex than sending it in the vbs (or cheating, as some might call it) ... using vbs to send the message would have doubled the amount of code!
To accomplish the same task using a bash script, you could do it like this:
[lang="bash"]echo "Fax server sendlog for `date +%d/%m/%y`" > /tmp/tempfile.txt
cat /var/log/sendlog.txt | grep `date +%d/%m/%y` >> /tmp/tempfile.txt
mail -s "Fax Server log for `date +%d/%m/%y`" myaddress@mydomain.com < /tmp/tempfile.txt[/lang]
Much simpler I think - only 3 lines of code!! People say Linux is harder than Windows but I think this proves that is not always the case. Manipulating files and data in Linux can take considerably less effort if you know which tools to use and how to use them.

