Oggi parleremo di come sia possibile automatizzare il controllo di reports che vi arrivano in formato CSV nella posta elettronica.
Ovviamente, con piccolissime modifiche, sarà possibile controllare qualsiasi formato di allegato o matchare le parole importanti nel corpo del messaggio...
Chi fa di mestiere l'informatico, l'amministratore di rete o altro, sa per esperienza che moltissimi software (backup, antivirus centralizzati, antispam, etc...) hanno, integrata di default, la possibilità di inviare un report periodico per e-mail, spesso allegandolo in un formato "analizzabile" come il CSV.
Ma che noia leggersi il "giornale dei reports" tutti i giorni, cercando con gli occhi le stesse cose e facendo fatica mentale...
Meglio automatizzare!
Ecco lo script:
Set objShell = CreateObject("Wscript.Shell") Set objOutlook = CreateObject("Outlook.Application") Set objNamespace = objOutlook.GetNamespace("MAPI") Set objInbox = objNamespace.GetDefaultFolder(6) GetMessaggiAvamar(objInbox) Sub GetMessaggiAvamar(objParentFolder) Set colFolders = objParentFolder.Folders conta = 0 Set objSubfolder = objParentFolder.Folders("AmministratoriWAN") Set MyItems = objSubfolder.Items MyItems.Sort "[ReceivedTime]", true conta = 0 For Each messaggio IN MyItems if (inStr(1,messaggio.Subject,"Avamar")) then Set allegati = messaggio.Attachments if (allegati.Count > 0) THEN ' se c'è almeno un allegato For Each allegato IN allegati if ((inStr(1,allegato.FileName, ".csv", 1)) And (inStr(1,allegato.FileName, "ackup", 1))) THEN allegato.SaveAsFile(pathSalvataggioAllegati & allegato.FileName) controllaCSVBackup pathSalvataggioAllegati, allegato.FileName, messaggio.ReceivedTime end if Next end if conta = conta+1 End if if conta>5 then Exit For end if Next End Sub Sub controllaCSVBackup(strPathtoTextFile, fileName, dataMessaggio) Set objFile = objFSO.OpenTextFile(strPathtoTextFile & fileName, ForReading) objFile.ReadLine Do Until objFile.AtEndOfStream strLine = objFile.ReadLine arrFields = Split(strLine, ",") strClient = arrFields(8) strGroupName = arrFields(12) strEsito = arrFields(31) strDataSessione = arrFields(2) REM decido il colore if (inStr(1, strEsito, "Activity completed", 1)) THEN messaggio = "OK#0A" End IF if (inStr(1, strEsito, "exceptions", 1)) THEN messaggio = "OKbutWarning#0E" End IF if (inStr(1, strEsito, "failed", 1)) THEN messaggio = "ERROR#0C" End IF strMessaggio = strDataSessione & " " & strGroupName & " client " & strClient & ": " & messaggio strMessaggio = Replace(strMessaggio, "(", "") strMessaggio = Replace(strMessaggio, ")", "") strMessaggio = Replace(strMessaggio, "/", ".") strMessaggio = Replace(strMessaggio, ":", ".") wscript.echo strMessaggio Loop objFile.Close End Sub
Chiaramente, questo script è personalizzato per analizzare le MIE mail con i report del MIO software di backup... ma ecco come personalizzarvelo.
alla riga
Set objSubfolder = objParentFolder.Folders("AmministratoriWAN")
sostituite AmministratoriWAN con il nome della sottocartella in cui ricevete i reports.alla riga
if (inStr(1,messaggio.Subject,"Avamar")) thensostituite Avamar con una stringa univoca che identifica i messaggi che contengono i reports da analizzare
alla riga
if ((inStr(1,allegato.FileName, ".csv", 1)) And (inStr(1,allegato.FileName, "ackup", 1))) THENsostituite "ackup" con un match sul nome degli allegati che volete analizzare e ".csv", se volete cambiare l'estensione.
nella funzione
Sub controllaCSVBackup
sostituite, nelle righe che contengono arrFields(n), n con il numero di colonna (ocio che parte da 0) che identifica il campo di cui prendere il testonella parte di logica in cui si sceglie il colore (vedrete più avanti perchè)
if (inStr(1, strEsito, "Activity completed", 1)) THEN messaggio = "OK#0A" End IF if (inStr(1, strEsito, "exceptions", 1)) THEN messaggio = "OKbutWarning#0E" End IF if (inStr(1, strEsito, "failed", 1)) THEN messaggio = "ERROR#0C" End IFsostituite i match delle stringhe ed i messaggi con i colori (sintassi "messaggio#codiceColore") che volete scrivere se il campo contiene il match.
A questo punto i messaggi vengono "sputati" riga per riga, per tutti gli ultimi 5 messaggi con i loro allegati.
Se volete modificare il numero dei messaggi analizzati, cambiate la riga
if conta>5 thencon il numero dei messaggi da analizzare.
e QUI viene il bello:
Se volete che i messaggi escano COLORATI, usiamo lo script dei colori meglio descritto nel mio articolo e loopiamo sulle righe risultanti, in un WRAPPER BATCH, come segue.
######################
for /F "usebackq tokens=*" %%a IN (`cscript "Controlla AVAMAR BACKUPS.vbs" //nologo`) DO ( @call ColoraStringa.bat %%a )######################
Il Risultato sarà spettacolare:
Spero di avervi stuzzicato.
Ciao!
Nessun commento:
Posta un commento
I commenti sono soggetti a moderazione, prima di essere pubblicati.
Qualsiasi contenuto illecito, immorale o che io ritenga (arbitrariamente) offensivo od inappropriato, verrà cancellato.