neocortex
Goto Top

Skript zum Neustarten eines Dienstes

hallo,

habe eine frage: ist es möglich ein skript zu schreiben

- das permanent überprüft ob ein dienst noch läuft (also auf reaktion testen)
- wenn dieser dann nicht mehr läuft diesen dienst (falls er sich aufgehängt hat) beenden und neuzustarten?

und das alles am besten vollautomatisch face-smile und mit wenig aufwand face-smile)

wichtig wäre mir jetzt ersteinmal ob das bei windows xp überhaupt möglich ist und wie aufwändig das ganze ist.
dann kann man immer noch basteln face-smile

danke schon mal vorab!

mfg
NeoCortex

Content-ID: 18000

Url: https://administrator.de/contentid/18000

Ausgedruckt am: 22.11.2024 um 21:11 Uhr

13100
13100 18.10.2005 um 17:00:32 Uhr
Goto Top
möglich is alles und bei windows schon mal sowieso.
NeoCortex
NeoCortex 18.10.2005 um 17:06:02 Uhr
Goto Top
hätte mich nicht so brav ausdrücken sollen ..... her damit! face-smile

wenn mir jemand bei so einer erstellung helfen könnte wäre ich froh, da ich im bereich der programmierung ein völliger noob bin. (hach selbstkritik ist doch was tolles face-smile)

mfg

NeoCortex
phpchris
phpchris 18.10.2005 um 17:06:59 Uhr
Goto Top
Schau mal bei dem Dienst auf den Reiter "Wiederherstellen", ist das das, was du suchst?
ben-D-ix
ben-D-ix 18.10.2005 um 17:10:28 Uhr
Goto Top
Mahlzeit,
gib mal über die Shell ein:
sc /?


Good Look
NeoCortex
NeoCortex 18.10.2005 um 17:36:44 Uhr
Goto Top
müsste ich mal ausprobieren. wie überprüft er diesen dienstausfall damit er ihn neustartet.

Wenn er sich aufhängt z.b. ist er ja dennoch vorhanden (aktiv) oder schnallt
das die verwaltung und merkt das er nicht funktioniert?
NeoCortex
NeoCortex 18.10.2005 um 17:38:21 Uhr
Goto Top
müsste doch glaube ich das gleich sein, wie bei der verwaltung mit wiederherstellen, oder?
ben-D-ix
ben-D-ix 18.10.2005 um 19:43:40 Uhr
Goto Top
Mahlzeit,
ist es auch. Nur ist mir unklar wie du in einem Script (wie o.g.) die 'services.msc' aufrufen und prüfen lassen willst.

Good Look
ketchup
ketchup 18.10.2005 um 20:15:47 Uhr
Goto Top
hi,

1. willst du überprüfen lassen ob ein dienst noch läuft (also "running" laut services.msc)?
2. oder ob der jeweilige dienst noch seine aufgabe erfüllt (zb w3svc beantwortet anfragen auf port 80)?

die erste variante kannst du leicht via "wiederherstellen" bzw wie schon erwähnt mit "sc.exe" oder einfach mit "net start | find SERVICENAME" überprüfen.

zu 2. ist es schon komplexer, denn dazu müsstest du ein tool verwenden/schreiben, welches die funktionalität des gewünschten services überprüft (zb: beim W3SVC eine HTTP-Abfrage). allerdings ist das für jedes einzelne zu überprüfende service zu tun, je nachdem welche aufgabe das service erfüllen soll. das bedeutet aufwand und kenntnisse über das jeweilige service/protokoll. *ggg*

j.
sysad
sysad 18.10.2005 um 23:12:44 Uhr
Goto Top
möglich is alles und bei windows schon
mal sowieso.

ROFL.

Gerade bei der Diensteverwaltung hat W echte Schwächen.

Bin seit langem auf der Suche und noch immer am Popeln mit sc. Aber das ist nicht echt Plug'n Play sondern eher Commandline-Umständlich.
Biber
Biber 18.10.2005 um 23:54:11 Uhr
Goto Top
Moin NeoCortex,

ich halte ketchups Antwort (beide Teile) für eine punktgenaue Antwort. 5 von 5.
Deine Frage
Wenn er sich aufhängt z.b. ist er ja dennoch vorhanden (aktiv) oder schnallt
das die verwaltung und merkt das er nicht funktioniert?
kann ich mit einem klaren "Jein" beantworten: Eigentlich (eins der am häufigsten verwendeten Worte in unserer Welt der Nullen und Einsen *gg), eigentlich "merkt" die Verwaltung das und der Dienst steht auf "STOPPED". Eigentlich immer.

Allerdings, wie immer unter Windows, verbleibt ein Bodensatz von 2% der Fälle, in denen Du einen Service-Absturz nur mitbekommst, weil Dich irgendwelche aufgeregten Anwender anrufen.

Zum Checken/Starten/Stoppen von Diensten hätte ich bei Bedarf irgendwo noch ein paar Batch-Oneliner, die mit den ResKit-Tools SC.exe, NetSvc.exe, SCList.exe oder auch dem 'Net Start Servicename' zusammenarbeiten.

Der Klicki-Bunti-Weg über "Wiederherstellen" ist jedenfalls <s>dummes Zeug</s> nicht zielführend für Deine Anforderung.

Grüße
Frank / der Biber aus Bremen
NeoCortex
NeoCortex 19.10.2005 um 09:47:33 Uhr
Goto Top
moin biber,

das wäre super wenn du mir mit den batches helfen könntest. das schlimme
an der ganzen sache ist eigentlich das es nur ein einziger dienst ist, der sich immer wieder abschießt.

andere frage: ist es möglich ein programm (quasi wie der guard bei antivir) als dienst zu bezeichnen?
ich habe auch zusätzlich noch ein programm das sich nicht in die dienste eingetragen hat und da hätte ich das auch irgendwie gerne. face-smile

gruß
NeoCortex
Biber
Biber 19.10.2005 um 18:09:39 Uhr
Goto Top
Moin NeoCortex,

ich weiß ja nicht, um welchen Service es nun geht, also kann ich nur ein bisschen unspezifisch vor mich hin schwafeln und ein paar Skizzen in den Sand malen...
Also, bei mir habe als für derartige Zwecke ein paar nützliche Utilities irgendwo im %path% untergebracht und zwar
NetSvc.exe, SC.exe und SCList.exe (alle aus den M$-ResKits)

Reg.exe, Net.exe und mein Lieblingstool Find.exe sind eigentlich ohnehin im Pfad. Die braucht man/frau im zweiten Schritt.
In meinem kleinen CMD-Fensterchen für Spontan-Abfragen ist standardmäßig EnableDelayedExpansion EINgestellt. Wenn Du das bei Dir nicht vorher über Registry oder AutoRun setzt, dann eine Zeile "Setlocal EnableDelayedExpansion" vorweg eintippen.
Bei mir funktionieren dann z.B. folgende Oneliner:
  • Liste aller Services auf einem Computer:
(SET /P C=Computername: ) & netsvc.exe \\!C! /List
  • Liste aller geSTOPten Services auf einem Computer
(SET /P C=Computername: ) & sclist.exe -s !C!
  • Läuft der WebService auf einem bestimmten Computer?
(SET /P C=Computername: ) & netsvc.exe \\!C! W3SVC /query

usw usw....

Hier bekommst Du also überall erstmal einen Output geliefert, den Du mit "Find" auf bestimmte Worte ( der Servicename würde sich anbieten ) untersuchst und je nach
- "Nicht gefunden" (Errorlevel 1) den Dienst neu startest mit net start oder bei
- "Gefunden" (Errorlevel 0) Dich wieder in den Schatten setzt.
So weit die allgemeine Skizze ins Blaue.
Kannst (und solltest) Du natürlich auch als Batch & als Dienst laufen lassen. Das "Wie" müsste auch hier im Forum zu finden sein.

BTW, ich hab vorhin gelesen, dass tim.frodermann gerade einen ähnlichen Thread in Arbeit (oder vielleicht jetzt schon fertig?) hat: Starttyp von Diensten per Batch/Script umschalten. Das ist ganz nah dran an Deiner Anforderung.

HTH Biber
Tree
Tree 24.10.2005 um 18:10:11 Uhr
Goto Top
Hi

Windows selbst bietet eine Überwachung an:

Schaut mal unter den Eigenschaften des Dienstes beim Reiter "Wiederherstellen".
Dort kann man Aktionen auswählen, die ausgeführt werden sollen, wenn der Dienst "ausfällt".

Was genau "Ausfallen" bedeutet kann ich nicht sagen.
Auf jeden Fall wird dieses "Ausfallen" Vom session control manageer im Eventlog protokolliert.

Gruß
Tree
Tree
Tree 24.10.2005 um 18:19:43 Uhr
Goto Top
andere frage: ist es möglich ein programm (quasi wie der guard bei antivir)
als dienst zu bezeichnen?
ich habe auch zusätzlich noch ein programm das sich nicht in die dienste
eingetragen hat und da hätte ich das auch irgendwie gerne. face-smile

geht!
Die Tools sind Teil der Resource Kits zu WinNT W2k und W2003.

Such mal nach SRVANY.exe und INSTSRV.exe.
folgendes sollte weiterhelfen:
http://support.microsoft.com/kb/q137890/
http://www.rz.uni-freiburg.de/pc/sys/srvany/srvany.doc
http://www.electrasoft.com/srvany/instsrv.exe
http://www.electrasoft.com/srvany/srvany.exe

Gruß
Tree