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-Key: 18000

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

Printed on: April 18, 2024 at 08:04 o'clock

Mitglied: 13100
13100 Oct 18, 2005 at 15:00:32 (UTC)
Goto Top
möglich is alles und bei windows schon mal sowieso.
Member: NeoCortex
NeoCortex Oct 18, 2005 at 15:06:02 (UTC)
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
Member: phpchris
phpchris Oct 18, 2005 at 15:06:59 (UTC)
Goto Top
Schau mal bei dem Dienst auf den Reiter "Wiederherstellen", ist das das, was du suchst?
Member: ben-D-ix
ben-D-ix Oct 18, 2005 at 15:10:28 (UTC)
Goto Top
Mahlzeit,
gib mal über die Shell ein:
sc /?


Good Look
Member: NeoCortex
NeoCortex Oct 18, 2005 at 15:36:44 (UTC)
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?
Member: NeoCortex
NeoCortex Oct 18, 2005 at 15:38:21 (UTC)
Goto Top
müsste doch glaube ich das gleich sein, wie bei der verwaltung mit wiederherstellen, oder?
Member: ben-D-ix
ben-D-ix Oct 18, 2005 at 17:43:40 (UTC)
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
Member: ketchup
ketchup Oct 18, 2005 at 18:15:47 (UTC)
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.
Member: sysad
sysad Oct 18, 2005 at 21:12:44 (UTC)
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.
Member: Biber
Biber Oct 18, 2005 at 21:54:11 (UTC)
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
Member: NeoCortex
NeoCortex Oct 19, 2005 at 07:47:33 (UTC)
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
Member: Biber
Biber Oct 19, 2005 at 16:09:39 (UTC)
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
Member: Tree
Tree Oct 24, 2005 at 16:10:11 (UTC)
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
Member: Tree
Tree Oct 24, 2005 at 16:19:43 (UTC)
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