Eventlog Watchdog Rechner automatisch neu starten bei Fehler


Tool um den Rechner bei einem Fehler im Eventlog neu zu starten


Kurze Beschreibung: wird ins Eventlog ein Fehler geschrieben, startet das Tool den Rechner neu.

Voraussetzungen:

Das Skript macht nur dann Sinn, wenn der PC im Normalbetrieb keine Fehler hat.
Hat der PC st├Ąndig Fehler im Eventlog, wird der PC st├Ąndig neu gestartet.
Im Falle eines Fehlers im Eventlog kann der Neustart noch abgebrochen werden, indem das Skript pausiert wird.

Warum das Ganze:

Der Grund warum ich das Skript geschrieben habe ist mein MediaPC ( Media Portal ):
Der PC ist normalerweise im Standbymodus und nimmt bei Bedarf Fernsehsendungen auf.
Ich hatte das Problem, dass nach ein paar Tagen, bzw. ab und zu beim Aufwachen aus dem Standby div. Fehler aufgetreten sind und der PC nicht mehr in der Lage war meine Sendungen aufzuzeichnen.
Der PC hat im Normalbetrieb keine Fehlermeldungen im Eventlog, au├čer es funktioniert etwas nicht mehr wie gew├╝nscht.
Das Skript ├╝berwacht das Eventlog (Anwendung und System) und schaut standardm├Ą├čig jede Sekunde auf die letzten 2 Eventlogmeldungen:

Download

Findet es dort einen Fehler, wird der PC neu gestartet. 

Download

Ich hab das Skript im Autostart Ordner abgelegt, somit stelle ich sicher, dass das System immer in einem einwandfreien Zustand ist. (Wenn nicht wird der PC neu gestartet) 

Download


Falls der Computer ein Problem hat und somit bei jedem Startvorgang einen Error ins Eventlog schreibt, w├╝rde der PC st├Ąndig neu starten, um aus dieser Endlosschleife auszubrechen, beim Windowsstart die Umschalttaste gedr├╝ckt halten, dann wird der Autostartordner nicht ausgef├╝hrt.

Version History

03.12.2010 sleep 60000 beim starten hinzugef├╝gt: Skript wartet 1 Minute bevor das Eventlog ausgelesen wird (verhindert ev. Endlos Bootschleifen)

 

Quellcode und Download

(kann angepasst und online auf dieser Seite kompiliert werden)


Der Download kann mit Hilfe des folgenden Quellcodes online generiert werden, dazu
den folgenden Code in den AutoIT Online Compiler kopieren und neu kompilieren:

#include <EventLog.au3>
#include <Date.au3>
#include <GUIConstants.au3>

$eintraege=2; wie viele Eventeintr├Ąge sollen ausgelesen werden
$timewait=1000; Zeit in Millisekunden zwischen Eventlog auslesen
$timewaitshutdown=10000; Zeit in Millisekunden bis der Rechner neu gestartet wird, wenn ein Fehler aufgetreten ist
$EventA=1; 1.. kontrolliert Eventlog Anwendung 0.. keine Kontrolle des Eventlog Anwendung
$EventS=1; 1.. kontrolliert Eventlog System 0.. keine Kontrolle des Eventlog System 
sleep(60000); 1 Minute warten, bevor das Eventlog das 1te mal ausgelesen wird (verhindert ev. Endlos Bootschleifen)

;Schleife Eventlog auslesen
Do
if $EventS=1 then $hEventLogS = _EventLog__Open("", "System")
if $EventA=1 then $hEventLogA = _EventLog__Open("", "Application")
$x=0
; Schleife um von einem Eventlogeintrag zum n├Ąchsten zu h├╝pfen
Do
if $EventS=1 then 
$aEventS = _EventLog__Read($hEventLogS, True, False) ; 
Else
dim $aEventS[9]
EndIf
if $EventA=1 then 
$aEventA = _EventLog__Read($hEventLogA, True, False) ; 
else
dim $aEventA[9]
endif
if $aEventS[8]="Error" then
TrayTip("starte den PC in " & $timewaitshutdown/1000  & " Sekunden neu", "AutoIT Watchdog hat einen Fehler im Eventlog festgestellt (System)", 5, 1)
sleep($timewaitshutdown)
Shutdown(6,"AutoitEventlog WatchDog Error in System")
EndIf
if $aEventA[8]="Error" then
TrayTip("starte den PC in " & $timewaitshutdown/1000  & " Sekunden neu", "AutoIT Watchdog hat einen Fehler im Eventlog festgestellt (Anwendung)", 5, 1)
sleep($timewaitshutdown)
Shutdown(6, "AutoitEventlog WatchDog Error in Application")
EndIf
$x=$x+1
Until $x>=$eintraege
sleep($timewait)
if $EventA=1 then _EventLog__Close($hEventLogA)
if $EventS=1 then _EventLog__Close($hEventLogS)
Until 1=2 ; unendliche Schleife 1 wird niemals 2 sein 

Zum Anpassen, vorher den Quellcode in die Zwischenablage speichern und weiter zum AutoIT OnlineCompiler

 

 

positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE f├╝r deine Bewertung!


Fragen / Kommentare