Jürgen Schilling - Natur | Fotografie | Technik .

 

JürgenSchilling

Natur | Fotografie | Technik

 
 

 Home

 Black&White
 Cyanotypie
 Fotogramme
 Infrarot
 Jägerprüfung
 Kategorien
 Kirlianfotografie
 Lochkamera
 Makroaufnahmen



Lightbox


 Manuals:
 
Alle Manuals
 Aluminium eloxieren
 Hochspannungsgenerator
 Belichtungszeitentabelle
 Beurteilung v. Negativen
 Blitzlichtfotographie
 Farbmischung
 Filmentwicklung
 Infrarotfotografie
 Teslatrafo
 Teslatrafo Rechner
 Schrauben u. Gewinde

 Entwicklingszeiten:
 Agfa Rodinal
 Kodak D76

 Tiefenschäferechner

 
 Impressum


______

















  
  Bilder pro Gast
  phpMyAdmin
  B4YCounter
  Most viewed
  Logout
  Login
  Theme curve
  Theme my-fruity

Den RAID-Controller eines Windows 2003 Servers überwachen
 

Ziel war es, einen RAID-Controller in einem Windows2003 Terminalserver zu überwachen, und im Fehlerfall eine Mail an den Administrator zu schicken.

Mit dem VB Script "eventquery.vbs" von Microsoft kann man das Eventlog von Windows Servern und Clints nach beliebigen Fehlermeldungen durchsuchen.
Das Script "eventquery.vbs" lässt sich nur nutzen wenn man "Windows Script 5.7 for Windows Server 2003" auf dem jeweiligen Gerät installiert hat.
Datum und Uhrzeit werden mit dem Programm unixdate.exe generiert.
Als Formatierung für die Zeitangaben wird nur das englische Format akzeptiert (mm/dd/yy,01:00:00AM-mm/dd/yy,01:00:00PM").
Im meinem Script, wird das Systemlog der letzten Stunde ausgewertet.
Dem entsprechend, muß das Script auch 1x pro Stunde über den Microsoft Task Scheduler gestartet werden.

Benötigt werden die Dateien.
- cmdlib.wsc
- scrptutl.dll
- eventquery.vbs
 Diese kommen mit der Serverinstallation mit.


Soll das Script auf einem Win XP ausgeführt werden, müssen diese Dateien von einem Windows 2003 Server oder der Windows 2003 Server CD
auf den XP Rechner kopiert und anschließend wie folgt registriert werden:
regsvr32 c:\winnt\system32\cmdlib.wsc
regsvr32 c:\winnt\system32\scrptutl.dll



Das EventLog nach Meldungen vom Array Controller durchsuchen und eine Mail an den Admin schicken:

 

ECHO OFF
cls
REM ----------------------------------------------------------------------------------------
REM Mit diesem Script wird das Eventlog periodisch nach Fehlermeldungen des RAID-Kontrollers
REM durchsucht. Wird eine "ARRAY-Meldung" gefunden, wird eine Mail mit dem Inhalt des
REM Eventlogs an die REM Administratoren geschickt.
REM Es werden nur die Logfiles 00:00 Uhr des Vortages - 24:00 Uhr des aktuellen Tages
REM beruecksichtigt 12:00:00AM - 12:00:00PM
REM ----------------------------------------------------------------------------------------
REM ----------------------------------------------------------------------------------------
REM Fuer dieses Script muss "Windows Script 5.7 for Windows Server 2003" installiert sein.
REM ----------------------------------------------------------------------------------------

REM Pfad zu den Programmdateien:
SET PATH=C:\Array-Ueberwachung\

REM Die suchende, vollstaendige Meldung des SystemLogs
REM Nur ein unvolltaendiges Textmuster wird nicht gefunden. Trotz der Freizeichen keine "" verwenden!
SET EVENT=HP Smart Array

REM Benachrichtigungs-Mail:
REM Pfad zur sentEmail.exe
SET MAILCLIENT=%PATH%sendEmail.exe

REM -f ABSENDER
SET ABSENDER=info@sr71.de

REM -t EMPFAENGER
SET EMPFAENGER=schilling@sr71.de

REM -u SUBJECT
SET SUBJECT="Der RAID-Controller in TQ-TERMSRV-2 hat eine Stoerung gemeldet!"

REM -m MESSAGE
SET MESSAGE=TEST

REM -s SERVER:PORT
SET SERVER_PORT=smtp.1und1.de:25

REM -xu USERNAME for SMTP authentication
REM Fuer Domaene:SET USERNAME=TQG\schilling
SET USERNAME=
schilling@sr71.de

REM -xp PASSWORD for SMTP authentication
SET PASSWORD=xxx

REM -o message-file=FILE File in den Messagepart der Mail schreiben
SET MESSAGEFILE=%PATH%HP-Smart-Array-Fehler-TMP.txt

REM Zeitfenster fuer die Ueberwachung
REM Heutiges Datum gegenwaertige Zeit minus einer Stunde:
FOR /f "Tokens=1" %%i in (
'%PATH%unixdate +%%m/%%d/%%y,%%I:%%m:%%S%%p -d"1 hours ago"') do set StartTime=%%i

REM Heutiges Datum gegenwaertige Zeit:
FOR /f "Tokens=1" %%i in (
'%PATH%unixdate +%%m/%%d/%%y,%%I:%%m:%%S%%p') do set CurrentTime=%%i



REM ----------------------------------------------------------------------------------------
REM Erzeugt ein leeres Reverenzfile mit der Groesse 0 Byte
REM Das Reverenzfile wird mit dem OutputFile aus dem Eventlog verglichen.
REM Wenn beide Files gleich gross sind, lag kein Event vor, und alles ist in Ordnung.
REM ----------------------------------------------------------------------------------------

TYPE x > %PATH%myfile 2> log.txt


REM ----------------------------------------------------------------------------------------
REM Syntax - es gilt nur die US-Schreibweise für die Zeit!!
REM /FI "Datetime EQ AnfangsZeit-SchlussZeit"
REM /FI "Datetime EQ mm/dd/yy,01:00:00AM-mm/dd/yy,01:00:00PM"
REM /FI "Datetime EQ 01/06/10,01:00:00AM-01/08/10,01:00:00PM"
REM ----------------------------------------------------------------------------------------

REM ----------------------------------------------------------------------------------------
REM Das FIND sorgt dafuer, dass nur Inhalte in der "HP-Smart-Array-Fehler-TMP.txt"
REM stehen, die mit dem Array etwas zu tun haben.
REM ----------------------------------------------------------------------------------------

REM ----------------------------------------------------------------------------------------
REM Ohne die Pipe "|" werden noch andere Inhalte in das File "HP-Smart-Array-Fehler-TMP.txt"
REM geschrieben, auch wenn kein Array-Fehler vor liegt.
REM ----------------------------------------------------------------------------------------

C:\Windows\System32\CSCRIPT C:\Windows\System32\eventquery.vbs /FI "Datetime eq %StartTime%-%CurrentTime%" /FI "Source EQ %EVENT%" /V /FO LIST /L system | C:\Windows\System32\FIND "Array" > %PATH%HP-Smart-Array-Fehler-TMP.txt

REM ----------------------------------------------------------------------------------------
REM HP-Smart-Array-Fehler.txt enthaelt die vollstaendige Fehlermeldung die dann
REM per Mail verschickt wird.
REM ----------------------------------------------------------------------------------------

C:\Windows\System32\CSCRIPT C:\Windows\System32\eventquery.vbs /FI "Datetime eq %StartTime%-%CurrentTime%" /FI "Source EQ %EVENT%" /V /FO LIST /L system > %PATH%HP-Smart-Array-Fehler.txt

REM ----------------------------------------------------------------------------------------
REM %PATH%myfile ist nur ein Dummyfile mit Groesse 0 Byte.
REM Der Dummy wird mit dem "HP-Smart-Array-Fehler-TMP.txt" Logfile verglichen.
REM Wenn beide Files die Groesse 0 BYTE haben, REM liegt kein Array-Fehler vor,
REM und es wird KEINE Mail verschickt.
REM Das Errorlevel ist in diesem Fall "0".
REM ----------------------------------------------------------------------------------------

C:\Windows\System32\FC %PATH%HP-Smart-Array-Fehler-TMP.txt %PATH%myfile

REM ----------------------------------------------------------------------------------------
REM if errorlevel 1 = [FEHLER]
REM if errorlevel 0 = [OK] - wenn beide Files gleich sind
REM ----------------------------------------------------------------------------------------

if errorlevel 1 %MAILCLIENT% -f %ABSENDER% -t %EMPFAENGER% -u %SUBJECT%" -o message-file=%MESSAGEFILE% -s %SERVER_PORT% -xu %USERNAME% -xp %PASSWORD%

REM Loeschen des Reverenzfiles mit der Groesse 0 Byte
DEL %PATH%myfile

 




Auszug aus der Dokumentation von Microsoft:


Eventquery.vbs

Lists the events and event properties from one or more event logs.

Syntax:

eventquery
[.vbs] [/s Computer [/u Domain\User [/p Password]]] [/fi FilterName] [/fo {TABLE|LIST|CSV}] [/r EventRange [/nh] [/v] [/l [APPLICATION] [SYSTEM] [SECURITY] ["DNS server"] [UserDefinedLog] [DirectoryLogName] [*] ]

The Bold Elements must be typed exactly as shown!!


Parameters:

/s
  Computer   : Specifies the name or IP address of a remote computer (do not use backslashes). The default is the local computer.

/u
  Domain \ User
Runs the script with the account permissions of the user specified by User or Domain\User. Default is the permissions of the current logged on user.

/p
  Password : Specifies the password of the user account that is specified in the /u parameter.

/fi
  FilterName   : Specifies the types of events to include in or exclude from the query. To find events with either value, Type and ID can be used together in a single syntax statement by using the or operator.The following are valid filter names, operators, and values.


 

Name

Operator

Value

Datetime

eq, ne, ge, le, gt, lt

mm/dd/yy(yyyy), hh:mm:ssAM(/PM)

Type

eq, ne, or

{ERROR|INFORMATION|WARNING|SUCCESSAUDIT|FAILUREAUDIT}

ID

eq, ne, or, ge, le, gt, lt

Any valid positive integer.

User

eq, ne

Any valid string.

Computer

eq, ne

Any valid string.

Source

eq, ne

Any valid string.

Category

eq, ne

Any valid string

/fo { TABLE | LIST | CSV } : Specifies the format to use for the output. Valid values are table, list, and csv.
/r   EventRange   : Specifies the range of events to list.


 

Value

Description

N

Lists N most recent events.

-N

Lists N oldest events.

N1-N2

Lists the events from N1 to N2.



/nh
  : Suppresses column headers in the output. Valid only for table and csv formats.

/v   : Specifies that verbose event information be displayed in the output.

/l [ APPLICATION ] [ SYSTEM ] [ SECURITY ] [ "DNS server" ] [ UserDefinedLog ] [ DirectoryLogName ] [ * ] ] :

 
Specifies the log(s) to monitor.
 Valid values are Application, System, Security, "DNS server", a user-defined log, and Directory log.
 "DNS server" can be used only if the DNS service is running on the computer specified by the /s parameter.
 To specify more than one log to monitor, reuse the /l parameter. The wildcard (*) can be used and is the default.

/? : Displays help at the command prompt.

Remarks:
"Windows Script 5.7 for Windows Server 2003" must be installed. Start "eventquery.vbs" with the following Command Line:


C:\Windows\System32\CSCRIPT C:\Windows\System32\eventquery.vbs

Examples:

The following examples show how you can use the eventquery command:

eventquery /l system
eventquery /l mylog
eventquery /l application /l system
eventquery /s srvmain /u maindom\hiropln /p p@ssW23 /v /l *
eventquery /r 10 /l application /nh
eventquery /r -10 /fo LIST /l security
eventquery /r 5-10 /l "DNS server"
eventquery /fi "Type eq Error" /l application
eventquery /fi "Datetime eq 06/25/00,03:15:00AM/06/25/00,03:15:00PM" /l application
eventquery /fi "Datetime gt 08/03/00,06:20:00PM" /fi "id gt 700" /fi "Type eq warning" /l system   eventquery /fi "ID eq 1000 OR ID ge 4500"
eventquery /fi "Type eq error OR Type eq INFORMATION"
  eventquery /fi "ID eq 250 OR Type eq ERROR"


Manual und einige Beispiele für das Programm UNIXDATE.exe:

Unixdate.exe

c:\unixdate.exe --help
Usage: c:\unixdate.exe [OPTION]... [+FORMAT]
or: c:\unixdate.exe [OPTION] [MMDDhhmm[[CC]YY][.ss]]
Display the current time in the given FORMAT, or set the system date.

-d, --date=STRING display time described by STRING, not `now'
-f, --file=DATEFILE like --date once for each line of DATEFILE
-r, --reference=FILE display the last modification time of FILE
-R, --rfc-822 output RFC-822 compliant date string
-s, --set=STRING set time described by STRING
-u, --utc, --universal print or set Coordinated Universal Time
--help display this help and exit
--version output version information and exit

FORMAT controls the output. The only valid option for the second form specifies Coordinated Universal Time. Interpreted sequences are:

%% a literal %
%a locale's abbreviated weekday name (Sun..Sat)
%A locale's full weekday name, variable length (Sunday..Saturday)
%b locale's abbreviated month name (Jan..Dec)
%B locale's full month name, variable length (January..December)
%c locale's date and time (Sat Nov 04 12:02:33 EST 1989)
%d day of month (01..31)
%D date (mm/dd/yy)
%e day of month, blank padded ( 1..31)
%h same as %b
%H hour (00..23)
%I hour (01..12)
%j day of year (001..366)
%k hour ( 0..23)
%l hour ( 1..12)
%m month (01..12)
%M minute (00..59)
%n a newline
%p locale's AM or PM
%r time, 12-hour (hh:mm:ss [AP]M)
%s seconds since 00:00:00, Jan 1, 1970 (a GNU extension)
%S second (00..61)
%t a horizontal tab
%T time, 24-hour (hh:mm:ss)
%U week number of year with Sunday as first day of week (00..53)
%V week number of year with Monday as first day of week (01..52)
%w day of week (0..6); 0 represents Sunday
%W week number of year with Monday as first day of week (00..53)
%x locale's date representation (mm/dd/yy)
%X locale's time representation (%H:%M:%S)
%y last two digits of year (00..99)
%Y year (1970...)
%z RFC-822 style numeric timezone (-0500) (a nonstandard extension)
%Z time zone (e.g., EDT), or nothing if no time zone is determinable

By default, date pads numeric fields with zeroes. GNU date recognizes
the following modifiers between `%' and a numeric directive.

`-' (hyphen) do not pad the field
`_' (underscore) pad the field with spaces

"," Maskiert das Komma

Beispiele:

In Scripten:
c:\unixdate.exe +%%Y%%m%%d-%%H%%M


Direkt auf der Shell::
c:\unixdate.exe +%Y%m%d-%H%M

20080911-1417

------------
In einem Script Zeitstempel auf einen Ordner setzen:

for /f "Tokens=1" %%i in ('c:\unixdate +%%Y%%m%%d-%%H%%M') do set timestamp=%%i
SET backup-folder=backup-%timestamp%


-------------
Das Datum von Gestern ausgeben:
c:\unixdate.exe +%Y%m%d -d yesterday

------------
Das Jahr um ein Jahr erhöhen
unixdate +"%Y%m%d" -d next-year
20120118

------------
Das Datum von von 22 Tagen ausgeben:
c:\unixdate.exe +%Y%m%d -d"22 day ago"

-----------
Von jetzt an 22 Tage zurück incl. Uhrzeit:
unixdate +%m/%d/%y","%I:%m:%S%p -d"22 day ago"
12/27/09,11:12:39PM

-----------
Ausgabe für eventviewer.vbs (Es sollen nur Logs der letzten 1 Stunde ausgewertete werden):
Vorgegebenes Format:
mm/dd/yy,01:00:00AM-mm/dd/yy,01:00:00PM
Also:
unixdate +%m/%d/%y","%I:%m:%S%p -d"1 hours ago"-unixdate +%m/%d/%y","%I:%m:%S%p
-----------

Aktuelle Zeit:
unixdate +%m/%d/%y","%I:%m:%S%p
01/19/10,12:01:08AMM

unixdate +%m/%d/%y","%I:%m:%S%p -d"1 hours ago"
01/18/10,11:01:21PMM
 


 

© 20.01.2010, Juergen Schilling