Nicki hat mich gefragt, ob ich eine Lösung für folgendes Problem hätte. Er wollte, dass ein regelmäßiger Task seine Festplattenkapazität abfragt und bei einer Unterschreitung eines Schwellwertes eine Warnung per Email verschickt wird.
Die Lösung des Problems besteht aus folgenden Punkten:
- einem VBS-Skript, welches die Festplattenkapazität abfragt und ggf. eine Warnmeldung generiert
- einer Batch-Datei, welche das VBS Skript aufruft und danach mit Blat ggf. eine Mail verschickt.
- dem SMTP Tool Blat.exe zum Verschicken der Email
Das VBS-Skript sieht folgendermaßen aus:
Option Explicit
Dim objfs, drive, FreierSpeicher, message
Set objfs = CreateObject("Scripting.FileSystemObject")
Set Drive = objfs.GetDrive("C:\")
FreierSpeicher = Drive.FreeSpace
message = "Achtung die Festplatte ist bald voll!"
' 2000 = 2 GB
If (FormatNumber(FreierSpeicher/1024^2,2) < 2000) then
WScript.Echo message
WScript.Quit(1)
else
'WScript.Echo "test"
WScript.Quit(0)
end if
Bei dem Skript muss nur die Message und der Wert, ab wann eine Warnung verschickt werden soll, angepasst werden. In dem Beispiel oben wird eine Warnung generiert, wenn 2 GB (2000) unterschritten sind.
Die Batch-Datei, die die Email verschicken soll, sieht wie folgt aus:
@echo off
rem Blat muss angepasst werden, die IP des SMTP Servers, so wie die richtige Emailadresse, Subject
cscript //nologo festpl.vbs > mail.txt && goto exit
blat -installSMTP localhost servername@domane.de
blat mail.txt -to admin@domane.de -s "Festplattenkapazitaet Warnung"
:exit
echo "Es wurde keine Email verschickt"
Die Batch ruft das VBS Skript auf und erstellt die mail.txt. Das VBS Skript gibt 0 oder 1 zurück. Wenn es 0 zurück gibt, bedeutet das, dass keine Warnung verschickt werden muss und die Batch springt zum Exit Blog. Bei einer 1 erfolgt das Verschicken einer Email mit Blat.
Blat.exe ist ein Open Source Tool, mit dem man Emails verschicken kann. Evtl. fragt sich der eine oder andere Leser, warum ich das nicht direkt in dem VBS Skript erledigt habe. Da man aber nicht wissen kann, auf welchem Host-System das Skript laufen soll und welche Mail-Komponenten auf diesem zur Verfügung stehen (CDO etc.), benutze ich bei sowas gern Blat. Blat muss nur einmal konfiguriert werden, entweder macht man das einmal für das System oder es wird wie in der Batch beschrieben, bei jedem Aufruf konfiguriert.
In der Batch muss die IP des SMTP angegeben werden, die Email über die verschickt werden soll und der Adressat, an den die Warnung verschickt werden soll. Weitere Infos zu Blat findet man hier.
Batch & VBS: Festplattenkapazitaetencheck.zip (35,55 KB)