Logo faq-o-matic.net
Logo faq-o-matic.net

Festplatte fast voll? Per Skript Warnung verschicken

von veröffentlicht am16. August 2010, 09:07 Uhr Kurzlink und Zitatlink einblenden
Kategorie Kategorie: Administration, Exchange, Monitoring, Scripting, VBScript   Translate with Google Translate Translate EN   Die angezeigte Seite drucken
Zuletzt aktualisiert: 5. Oktober 2010

Als Administrator weiß man doch lieber vor den Nutzern, wenn etwas nicht mehr funktioniert. Noch besser ist natürlich, wenn man aufgrund einer rechtzeitigen Information ein sich androhendes Unheil abwenden kann. Und solange man noch einen funktionierenden E-Mail-Server hat, bietet sich dieser doch als Informant an.

Ein Problem hier ist meist das Fehlen von Überwachungstools, deren Konfiguration auf das zu überwachende Objekt oder die Wahl der richtigen Informationsweitergabe. Ein Eintrag in einem Logfile nützt mir beispielsweise nichts, wenn ich immer wieder mal nicht rechtzeitig reinschaue. Außerdem nutze ich als Admin doch lieber Automatismen, die mir einiges abnehmen.

Ein wiederkehrendes Thema ist das Volllaufen von Festplatten, ganz besonders gerne auch derjenigen, die Transaktionsprotokolle von Datenbanken beherbergen. Erscheint dann die Meldung „Kein Platz mehr auf Laufwerk X:“ zusammen mit „Übrigens, die Datenbanken sind deswegen auch angehalten worden“, ist das besonders ärgerlich.

Unter Windows (ab Windows 2003) kann mit einem VBSkript eine Kontrolle und Info erfolgen. Das Skript könnte über einen Task (zum Beispiel unter Windows Server 2008 R2 über die Aufgabenplanungsbibliothek einzurichten) regelmäßig gestartet werden und beim Unterschreiten einer Grenze per E-Mail warnen.

Aufbau des Skriptes

Nach der Definition von Konstanten zur besseren Auswahl beim Zusammenstellen der CDO-Nachricht werden über Variablen die Grenze und die Daten für den E-Mail-Aufbau festgelegt. Über die Funktion „Platzkontrolle“ können dann Laufwerke auf noch freien Speicherplatz geprüft und zuletzt mit Hilfe der Prozedur „CDOmail“ eine E-Mail verschickt werden. (Möchtet ihr die Funktion oder die Prozedur in anderen Skripten verwenden, so wären die von mir zur besseren Übersicht am Skriptanfang definierten dazugehörigen Variablen und Konstanten „mitzunehmen“.)

Die Idee zur CDOmail habe ich von http://www.msxfaq.de/code/sendcdomail.htm und Infos von http://www.paulsadowski.com/wsh/cdo.htm

Das VBSkript

  1. Option explicit
  2.  
  3. Dim strIPdesSMTP, strBetreff, strAn, strAbsender, strAnhang, strBenutzer, strPasswort
  4. Dim intGrenze, kritisch, strText
  5. Dim fso, oDrive, strPlatz, vglGrenze
  6. Dim oMessage
  7.  
  8. ‚Wo soll die E-Mail angeliefert werden?
  9. Const cdoSendUsingPickup = 1 ‚…im Pickup-Verzeichnis des auf dem skriptausführenden Server laufenden SMTP-Dienstes
  10. Const cdoSendUsingPort = 2 ‚…an einen SMTP-Server im Netzwerk
  11.  
  12. ‚Wie soll sich am SMTP-Server authentifiziert werden?
  13. Const cdoAnonymous = 0 ‚keine Authentifizierung erforderlich am SMTP-Server
  14. Const cdoBasic = 1 ‚dann muss strBenutzer und strPasswort angegeben werden
  15. Const cdoNTLM = 2 ‚der das Skript ausführende Benutzer wird zur Anmeldung am SMTP-Server benutzt
  16.  
  17.  
  18. strIPdesSMTP = "10.10.10.10" ‚IP des SMTP-Servers eintragen
  19. strBetreff= "Hier steht der Betreff"
  20. strAn = "empf1@dom.de;empf2@dom.de"
  21. strAbsender = "abs@dom.de"
  22. strAnhang = "" ‚Eventuell eine Datei mit vollständigem Pfad angeben
  23.  
  24. ‚für den Fall der Klartext-Authentifizierung (cdoBasic)
  25. strBenutzer = "Domäne\username"
  26. strPasswort = "geheim" ‚ Achtung: Wird hier ein Passwort benutzt, sollte das VB-Skript verschlüsselt werden
  27.       
  28. ‚Bei Unterschreiten welcher Grenze soll eine E-Mail versandt werden?
  29. intGrenze = 2048 ‚in MB
  30.  
  31. kritisch = "Nein" ‚Wird bei Unterschreiten der Grenze durch die Funktion Platzkontrolle auf Ja gesetzt
  32.  
  33. strText = "Noch vorhandener Platz auf den Laufwerken:" & vbcrlf
  34. strText = strText & Platzkontrolle("C:\",intGrenze) & vbCrLf
  35. strText = strText & Platzkontrolle("D:\",intGrenze) & vbcrlf
  36. ‚Weitere Laufwerke prüfen? => Kommentarzeichen der nächsten beiden Zeilen entfernen
  37. ’strText = strText & Platzkontrolle("E:\",intGrenze) & vbcrlf
  38. ’strText = strText & Platzkontrolle("F:\",intGrenze) & vbcrlf
  39.  
  40. If kritisch = "Ja" Then
  41.   CDOmail strBetreff, strAbsender, strAn, strText, strAnhang
  42. End if
  43.  
  44. Function Platzkontrolle(sLW,sLW_Warngrenze)
  45.  
  46. Set fso = CreateObject("Scripting.FileSystemObject")
  47.   Set oDrive = fso.getdrive(sLW)
  48.   strPlatz = oDrive.freespace
  49.   strPlatz = FormatNumber (strPlatz/1024^2,2)
  50.   vglGrenze = FormatNumber (sLW_Warngrenze,2)
  51.   If abs(vglGrenze)>abs(strPlatz) Then
  52.     kritisch = "Ja"
  53.     Platzkontrolle = "ACHTUNG: Auf " & sLW & " wurde die " & vglGrenze & " MB Grenze unterschritten. Noch " & strPlatz & " MB frei"
  54.   Else
  55.     Platzkontrolle = sLW & "OK. Noch " & strPlatz & " MB frei"
  56.   End if
  57.  
  58. Set oDrive = nothing
  59. Set fso = nothing
  60.  
  61. End Function
  62.  
  63.  
  64. Sub CDOmail(fBetreff,fAbs,fAn,fText,fAnhang)
  65.   Set oMessage = CreateObject("CDO.Message")
  66.  ‚Erzeugung der Nachricht
  67.   With oMessage
  68.     .Subject = fBetreff
  69.     .From = fAbs
  70.     .To = fAn
  71.     .TextBody = fText
  72.     If fAnhang<>"" Then
  73.       oMessage.AddAttachment fAnhang
  74.     End If
  75.     ‚Server Verbindungsdaten
  76.     .Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort
  77.     .Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strIPdesSMTP
  78.     .Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoNTLM
  79.     ‚Wird cdoBasic benutzt, die beiden folgenden Zeilen aktivieren
  80.     ‚.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = strBenutzer
  81.     ‚.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = strPasswort
  82.     .Configuration.Fields.Update
  83.     .send
  84.   End With
  85.  
  86.   Set oMessage = nothing  
  87.  
  88. End Sub
  89.  

© 2005-2019 bei faq-o-matic.net. Alle Rechte an den Texten liegen bei deren Autorinnen und Autoren.

Jede Wiederveröffentlichung der Texte oder von Auszügen daraus - egal ob kommerziell oder nicht - bedarf der ausdrücklichen Genehmigung durch die jeweiligen Urheberinnen oder Urheber.

Das Impressum findet sich unter: http://www.faq-o-matic.net/impressum/

Danke, dass du faq-o-matic.net nutzt. Du hast ein einfaches Blog sehr glücklich gemacht!