Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Dienste stoppen und neu starten und Errorhandling

Mitglied: Maiwald

Maiwald (Level 1) - Jetzt verbinden

05.03.2012, aktualisiert 16:08 Uhr, 4700 Aufrufe, 11 Kommentare

Hallo,

ich möchte mehrere Dienste per Batch auf einem W2k3 Server täglich neu starten lassen.
Dazu habe ich mir eine for Schleife gebaut, die die Dienste auch stoppt und startet und auch ein Logfile schreibt.
Ich möchte aber, dass auch sichergestellt ist, dass erst alle Dienste gestoppt und anschliessend gestartet werden.

Kann mir einer von Euch eine Denkanstoss geben...

Hier noch mein Auszug aus dem Batch

:: Umgebungsvariable setzen
set jahr=%date:~6,4%
set monat=%date:~3,2%
set tag=%date:~0,2%
set stunde=%time:~0,2%
set minute=%time:~3,2%
set sekunde=%time:~6,2%
set logfile="PFAD\%jahr%%monat%%tag%_%stunde%%minute%.log"

::Zeitangabe für stoppen mitgeben
echo --------------------------------- >> %logfile%
echo %date% - %stunde%:%minute%:%sekunde% Uhr >> %logfile%
echo --------------------------------- >> %logfile%

::Dienstestop und Auslesen des Dienststatus
for %%f in (Dienst1 Dienst2 ....Dienst32) do (
sc stop %%f
sleep 3
for /F "tokens=2" %%g in ('sc query %%f ^|findstr %%f') do for /F "tokens=4" %%h in ('sc query %%f ^|findstr STATE') do @echo %%h %%g >> %logfile%
)

echo --------------------------------- >> %logfile%

Dienstestart und Auslesen des Dienststatus
for %%f in ( Dienst1 Dienst2 ....Dienst32) do (
sc start %%f
sleep 3
for /F "tokens=2" %%g in ('sc query %%f ^|findstr %%f') do for /F "tokens=4" %%h in ('sc query %%f ^|findstr STATE') do @echo %%h %%g >> %logfile%
)

:eof
Mitglied: Skyemugen
05.03.2012 um 17:27 Uhr
Aloha,

Hilfe kommt später, nachdem du unsere <code></code>-Formatierung gefunden hast, bei Plaintext liest mein Hirn nur ...

greetz André
Bitte warten ..
Mitglied: Nagus
05.03.2012 um 17:48 Uhr
Moin,

ich helf mal mit der Formatierung (siehe unten)

kann es sein das mehr als zweimal code Formartierungen nicht gehen?
Mal so ganz blöde gefragt: du liest doch schon den Status der Dienste aus. Wenn der nicht 1 ist, ist der Dienste nicht angehalten :? Vor allem, was soll denn passieren wenn er nicht angehalten ist? Willst Du dann das script anhalten? Den Server neu starten?

Du kannst
01.
for /F "tokens=2" %%g in ('sc query %%f ^|findstr %%f') do for /F "tokens=4" %%h in ('sc query %%f ^|findstr STATE') do @echo %%h %%g >> %logfile% 
02.
 
doch gerade noch einmal laufen lassen, und musst nur prüfen ob der Status für den Dienst gleich 1 ist. Wenn nicht .... siehe oben
Gruß
Nagus

Und hier wie's aussehen soll: ned die Lösung aber von der Formatierung

01.
:: Umgebungsvariable setzen 
02.
set jahr=%date:~6,4% 
03.
set monat=%date:~3,2% 
04.
set tag=%date:~0,2% 
05.
set stunde=%time:~0,2% 
06.
set minute=%time:~3,2% 
07.
set sekunde=%time:~6,2% 
08.
set logfile="PFAD\%jahr%%monat%%tag%_%stunde%%minute%.log" 
09.
 
10.
::Zeitangabe für stoppen mitgeben 
11.
echo --------------------------------- >> %logfile% 
12.
echo %date% - %stunde%:%minute%:%sekunde% Uhr >> %logfile% 
13.
echo --------------------------------- >> %logfile% 
14.
 
15.
::Dienstestop und Auslesen des Dienststatus 
16.
for %%f in (Dienst1 Dienst2 ....Dienst32) do ( 
17.
sc stop %%f 
18.
sleep 3 
19.
for /F "tokens=2" %%g in ('sc query %%f ^|findstr %%f') do for /F "tokens=4" %%h in ('sc query %%f ^|findstr STATE') do @echo %%h %%g >> %logfile% 
20.
21.
 
22.
echo --------------------------------- >> %logfile% 
23.
 
24.
Dienstestart und Auslesen des Dienststatus 
25.
for %%f in ( Dienst1 Dienst2 ....Dienst32) do ( 
26.
sc start %%f 
27.
sleep 3 
28.
for /F "tokens=2" %%g in ('sc query %%f ^|findstr %%f') do for /F "tokens=4" %%h in ('sc query %%f ^|findstr STATE') do @echo %%h %%g >> %logfile% 
29.
30.
 
31.
:eof
Bitte warten ..
Mitglied: 60730
05.03.2012 um 20:21 Uhr
Moin,
Ot
Zitat von Nagus:
Moin,
kann es sein das mehr als zweimal code Formartierungen nicht gehen?
/ot

Gruss
Bitte warten ..
Mitglied: Nagus
06.03.2012 um 13:41 Uhr
Hi Timo,
OT
ich bin zu doof ... egal
/OT

Gruß
Nagus
Bitte warten ..
Mitglied: 60730
06.03.2012 um 14:01 Uhr
Moin,

Zitat von Nagus:
Hi Timo,

Salve

Nee nee schreiben wir mal andersherum, der TO wäre klüger beraten, wenn er nicht nur den Tipp von André anwenden würde, sondern auch - wenn er statt in zwei Blöcken jeweils Dienst1 Dienst2 Dienst3 reinmalt diese Dienstabsuche in einer separaten ini für beide Blöcke und mit nur einer Anpassung machen würde.

Feeddbäck in irgendeine Richtung wäre eigentlich auch ne Lösung

gruß
Bitte warten ..
Mitglied: Maiwald
06.03.2012 um 21:08 Uhr
Hallo Nagus,

danke für die Formatierung
Werde ich beim nächsten Mal beachten.

Hier nochmal mein Gedankengang:

1. Dienste stoppen (ist mit diesem Skript schon getan)
2. Wenn Dienst 1 oder Dienst 32 nicht gestoppt ist, sollte eine Fehlerroutine diesen stoppen. Dies sollte 3x versucht werden. Erst dann sollte der nächste Dienst gestoppt werden.
3. Starten aller Dienste. Hier sollte ebenfalls eine Überprüfung eingebaut werden (wenn Dienst 1 nicht gestartet wurde, dann versuche dies 3 x und springe anschliessend zum nächsten Dienst)
4. Alles sollte natürlich auch weiterhin protokolliert werden.

Ich hoffe mich ein wenig verständlicher ausgedrückt zu haben.

Schönen Abend

Mario
Bitte warten ..
Mitglied: Nagus
07.03.2012 um 21:13 Uhr
Moin,
dann würde ich das anders machen:
  1. : Timo anwenden, d.h. am Anfang die Dienste definieren
  2. : den Status der Dienste abfragen --> hast du ja schon im Prinzip
  3. : definierte Dienste stoppen und warten ... das kann ja länger dauern
  4. : Status der Dienste abfragen, wenn der Dienst nicht 1 ist fehler setzen und ggf. hochzählen, nochmal versuchen
  5. : Dienste starten und den Zustand abfragen, wenn 1 email an Admin

fetisch .... so würde ich die logig umsetzen. mit deiner Schleife hast Du ja schon alles, musst es nur noch ausfeilen.

Aber mal ne ganz andere Frage: wäre es nicht besser und einfacher den Server neu zu starten und das nur einmal pro Woche oder so?
Wenn das mit den Dienste nämlich nicht geht, steht die Maschine u.U. ja auch ...

Gruß
Nagus
Bitte warten ..
Mitglied: Maiwald
07.03.2012 um 22:52 Uhr
Hallo Nagus,

danke für die Anregungen

zu 1. verstehe nicht was Timo damit meint
zu 3. das Stoppen und Starten der Dienste dauert jetzt ca 4 Minuten. Das habe ich im Log ausgelesen...
zu 4. wie sollte das am besten gemacht werden? KAnnst du mal einen Tipp geben, wie die Abfrage aussehen soll. Wenn ich mich nicht täusche, könnte auch ein Taskill meinen Prozess stoppen und somit auch den Dienst stoppen oder irre ich da?
zu 5. Das mit der Mail habe ich mir auch so gedacht. Die Dienste werden eh überwacht und ich bekomme schon eine Mail. Nur möchte ich diese zur Sicherheit beim Fehlversuch ein zweites Mal starten. Hier bräuhte ich einen Ansatz, wie ich das am Besten machen könnte.

Der Serverreboot dauert ca 15 Minuten, bis dieser wieder Anfragen verarbeiten kann. Ich habe dieVorgabe bekommen, den Server nur am Wochenende neu zu starten und unter der Woche sollen nur die Dienste gestartet werden.
Eine Frage zu der for Schleife habe ich noch. Gibt es eine Möglichkeit, die Dienste 1-32 nicht so aufzulisten (for %%f in (Dienst1 Dienst2 ....Dienst32), sondern sich diese per Variable zu holen for %%f in ($Dienste). Die Dienstnamen unterscheiden sich vom angezeigten "Dienstnamen" unter Dienste.

Schönen Abend noch

Gruß
Mario
Bitte warten ..
Mitglied: 60730
07.03.2012 um 23:16 Uhr
Salve

  • Timo meint, wenn du da was anpassen willst, mußt du Zeile 16 & Zeile 25 anpassen - jagst du die schleife(n) über eine Textdatei, mußt du die nur einmal anpassen.

  • 3 naja -was für dienste sind das denn überhaupt?
  • 4 ist die Batch und die Dienststoppkiste überhaupt das gleiche "Blech"?
  • 5 naja.... da halte ich es mit dem Kollegen André
Hilfe kommt später, nachdem du unsere <code></code>-Formatierung gefunden hast, bei Plaintext liest mein Hirn nur ...
  • 5b Die Dienstnamen unterscheiden sich vom angezeigten "Dienstnamen" unter Dienste.
Diese Namen sind doch nur Schall & Rauch, die Anzeigenamen nutzt doch keiner....
Bitte warten ..
Mitglied: Maiwald
08.03.2012 um 22:44 Uhr
Hallo,

das mit den Dienstnamen aus der Datei herauslesen habe ich hinbekommen

01.
set "config_dienste=D:\Test\dienste.conf" 
02.
 
03.
for /f "usebackq tokens=1" %%f in ("%config_dienste%") do ( 
04.
sc stop %%f  
05.
sleep 3  
06.
for /F "tokens=2" %%g in ('sc query %%f ^|findstr %%f') do for /F "tokens=4" %%h in ('sc query %%f ^|findstr STATE') do @echo %%h %%g >> %logfile%  
07.
) 
Zitat von Nagus:
  • Status der Dienste abfragen, wenn der Dienst nicht 1 ist fehler setzen und ggf. hochzählen, nochmal versuchen
Wie wird das gemacht? Kannst du mir ein Denkanstoss geben
Schön wäre es auch, wenn nach dem 2 Vesuch der Dienst gekillt wird (taskill)
  • Dienste starten und den Zustand abfragen, wenn 1 email an Admin
Dienst Starten habe ich ja ach schon geschrieben, lediglich das mit dem Errorlevel fehlt mir
  • Aber mal ne ganz andere Frage: wäre es nicht besser und einfacher den Server neu zu starten und das nur einmal pro Woche oder so?
Geht leider nicht.. Vorgabe vom Hersteller - Dienste müssen gestartet werden


Gruß
Mario
Bitte warten ..
Mitglied: Maiwald
15.03.2012 um 16:57 Uhr
Hallo,

hat noch jemand eine Idee, wie ich den Errorlevel abfragen kann

Gruß
Mario
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Powershell: Dienst - Starten, Stoppen und Status Abfragen

gelöst Frage von SaschaRDBatch & Shell2 Kommentare

Hallo zusammen, habe das Starten, Stoppen und die Abfrage des Status (inkl. Error-Handling) eines Dienstes zusammengelegt, jedoch hängt er ...

Exchange Server

Exchange 2013 sicher stoppen und starten

gelöst Frage von wixmixbinExchange Server12 Kommentare

Hallo Admins, ich mache vor jeder Installation von Windows Updates auf Windows Server 2012 ein Snapshot. UPDATE: VM läuft ...

Windows 7

Dienst per Aufgabenplanung nach login neu starten

Frage von maniacmacpainWindows 714 Kommentare

Hallo, gleich vorab, ich habe verschiedene "HowTos" usw. zu diesem Thema gefunden, aber es funktioniert einfach nicht. Ich habe ...

Windows Server

SBS 2011 - Mehrere Dienste stoppen periodisch

Frage von derheckiWindows Server9 Kommentare

Auslöser für das Stoppen der Dienste ist ein Application-Error 1000 betreffend svchost.exe_wuauserv - Fehlerhaftes Modul wuaueng.dll Name der fehlerhaften ...

Neue Wissensbeiträge
Humor (lol)
IoT-Gefahr: Smartes Aquarium leckt!
Information von Lochkartenstanzer vor 3 TagenHumor (lol)3 Kommentare

Moin, Die IoT-Manie hat weitere Opfer gefunden. Ein Casino-Leck durch ein smartes Aquarium: Allerdings haben sie kein Wasser, sondern ...

Router & Routing

Alte Fritzbox 7270 mit VPN und SIP-Telefonie hinter O2 Homebox 6641 als "Modem"

Erfahrungsbericht von the-buccaneer vor 3 TagenRouter & Routing3 Kommentare

Nun war es soweit: Auch O2 hat mich mit VOIP zwangsbeglückt. Heute am Privatanschluss, in 2 Wochen ist das ...

Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 3 TagenSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 4 TagenWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Netzwerkmanagment im Haus mit Switch, Panel und pfsense
gelöst Frage von CorraggiounoNetzwerkmanagement20 Kommentare

hi zusammen, wir sind gerade dabei das ganze Haus bzw. die einzelnen Zimmer mit netzwerkdosen zu versorgen. Vom Keller ...

Linux
Linux Server oder Windows Server - lohnt eine Umstellung auf Linux und ebenso basierende SW bei einer langfristigen Planung?
Frage von motus5Linux19 Kommentare

Wir brauchen bei uns einen neuen Server. Dieser wird als Fileserver, Domäne Controller sowie Exchange Server verwendet. Wir versuchen ...

Netzwerkgrundlagen
VLAN - Offene Fragen
Frage von KnettenbrechNetzwerkgrundlagen17 Kommentare

Hallo zusammen, ich befasse mich derzeit mit dem Thema VLAN. Hierzu habe ich schon einige Guides gelesen, einschließlich des ...

Router & Routing
VPN hinter zweiter Fritzbox nutzen im Nachbarhaus
gelöst Frage von georg2204Router & Routing11 Kommentare

Hallo zusammen, ich blicke hier leider nicht mehr so ganz durch. In Haus 1 steht eine Fritzbox 7390, diese ...