Összeraktam egy klassz kis rendszert, ami a Windows Performance Alert segítségével figyel bizonyos rendszerparamétereket és vészhelyzet esetén riaszt emailben vagy SMSben.
Kis kitérő:
A Windows Performance Monitorja rengeteg rendszerszintű és más telepített program (pl. SQL Server) paramétereit képes figyelni. A figyelt értékekhez beállíthatunk triggereket, más néven Alert-eket, melyek az adott érték bizonyos határ alá vagy fölé lépését érzékelik. A beállított riasztási kritériumok teljesítésekor a Performance Monitor képes más alkalmazásokat meghívni és paramétereket átadni. Ha ezt egy olyan programnak/scriptnek adjuk át, mely SMTP-n keresztül képes emailt küldeni, már kaptunk is egy komplett és végtelenül egyszerű riasztási rendszert.
De hogy lesz ebből sms?
Az SMS küldéshez gateway-nek a Pannon-os email címemet használtam, mely képes a beérkező üzeneteket továbbítani smsben a saját telefonszámomra. Ez költséghatékony megoldás, mert nem kell előfizetnem semmire, egyszerűen az én egyenlegemből vonja le az SMS-ek árát (ami mellesleg kedvezőnek is mondható). Minden magyarországi mobilszolgáltató ingyenesen biztosít ilyen képességű email címet előfizetői számára, ha jól tudom.
Tehát lássuk a batch+vb script párost, mely mindezt lehetővé teszi:
BATCH SCRIPT (alert2mail.bat):
@ECHO OFF
FOR %%F IN (%0) DO PUSHD "%%~pF"
cscript alert2mail.vbs %1 %2 %3 %4 %5
POPD
SMTP VBSCRIPT (alert2mail.vbs):
Option Explicit
On Error Resume Next
Dim paramz
Dim msg
Dim paramname
Dim paramdate
Dim paramcounter
Dim paramvalue
Dim paramlimit
Set paramz = WScript.Arguments
paramname = paramz(0)
paramdate = paramz(1)
paramcounter = paramz(2)
paramvalue = paramz(3)
paramlimit = paramz(4)
Set msg = CreateObject("CDO.Message")
With msg
.To = "te@email.cimed"
.From = "szerver@email.cime"
.Subject = "RIASZTAS: " & paramname
.TextBody = paramcounter & " " & paramvalue & " (" & paramlimit & ")" & paramdate
.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.szerver.cime"
.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Configuration.Fields.Update
.Send
End With
Előbbi arra szolgál, hogy parancssorból vagy más progin keresztül meghívhassuk utóbbit, mely egy szimpla kis visual basic script nyelven írt kis scriptecske. Futtatásakor tetszőleges smtp szerver segítségével küld egy mailt az előre definiált és a batch scripttel átadott paraméterekkel. Jelenleg 5 paramétert definiáltam, de nyilván bármennyit képes egyik a másiknak átadni. Ezek konkrétan a bevezetőben leírt Performance Monitorhoz írt scriptek.