automatisch & remote Windows Dienste steuern

26.05.2011

win_dienste.jpgEs scheint die Woche “Jeden Tag ein Script” zu sein … heute gibt es eins, mit dem man remote Windows-Dienste steuern und überwachen kann. In großen Unternehmen gibt es dafür Managementsuiten (z.B. CA Unicenter oder MS System Center), die die Clients überwachen (Software, Dienste, Prozesse, Nutzer). Leider kosten die Suiten viel Geld, bedürfen der Pflege und der Schulung ihrer Benutzer.

In Sachsen wird in öffentlichen Einrichtungen gern Sophos Antivirus eingesetzt, da es eine Landeslizenz dafür gibt. Ja, auch ich setzen auf Arbeit Sophos ein … leider ist die Enterprise Console nicht so der Hit und ich habe mir ein kleines Batch Script geschrieben, dass remote gezielt diese Sophos Dienste überwacht, beendet oder neustartet.

Es ist natürlich ein Leichtes dies auf andere Dienste zu adaptieren, deswegen erspare ich mir die Verallgemeinerung und belasse es bei den Sophos Diensten.


Das Script läuft stabil unter Windows XP SP3, unter Windows Vista oder Windows 7 habe ich es nie getestet. Ob es das Kommando “sc” noch unter den aktuellen Windows Versionen gibt weiß ich leider nicht.

@ECHO OFF

REM v0.2c @ 19.09.08
REM by Simn Gude

REM Dieses Script überprüft eine bestimmte IP auf laufende Sophos Dienste.
REM Zudem kann diese Script diese Dienste ggf. remote neu starten.

:VARIABLE
REM Variablen definieren
SET Admin_Name=0000000
SET INPUT=0000000
SET INPUT2=0000000
SET INPUT_IP=0000000
SET HEADER=.........................................................
SET TITEL=.............................. SOPHOS DIENSTE MANAGER ...
SET FOOTER=..v0.2c..................................................
verify on

:START
TITLE SOPHOS DIENSTE MANAGER
CLS
ECHO.
ECHO %HEADER%
ECHO %TITEL%
ECHO %FOOTER%
ECHO.
ECHO. 
ECHO Dieses Script testet die Sophos-AV Dienste auf 
ECHO einem PC und startet diese gegebenenfalls neu.
ECHO.

:INPUT_1
REM erwartet die Eingabe für das Hauptmenü
SET INPUT=0000000
ECHO [1] PC auf Sophos Dienste testen
ECHO [2] Sophos Dienste neu starten
ECHO [3] Programm als Admin neu starten
ECHO [4] Programm beenden
ECHO.
SET /P INPUT="INPUT: "
IF "%INPUT%" == "0000000" (GOTO START)

:INPUT_1_2
REM wertet die Eingabe aus
IF "%INPUT%" == "1" (GOTO CHECK_1)
IF "%INPUT%" == "2" (GOTO DIENSTE)
IF "%INPUT%" == "3" (GOTO ADMIN)
IF "%INPUT%" == "4" (GOTO ENDE)
IF NOT "%INPUT%" == "2" (GOTO START)

:ADMIN
REM Setz Variable für Admin Namen zurück und versucht das Script in Admin Kontext zu starten
SET Admin_Name=0000000
ECHO.
ECHO.
SET /P Admin_Name="Bitte geben Sie den Namen des Admin Account ein (z.B. Domaene\Admin): "
IF "%Admin_Name%" == "0000000" (GOTO LOGIN_ERROR)
ECHO.
runas /user:%Admin_Name% "%cd%test.cmd"
IF %ERRORLEVEL%==0 (GOTO ENDE)
IF NOT %ERRORLEVEL%==0 (GOTO LOGIN_ERROR)

:LOGIN_ERROR
TITLE SOPHOS DIENSTE MANAGER
CLS
ECHO.
ECHO %HEADER%
ECHO %TITEL%
ECHO %FOOTER%
ECHO.
ECHO.
ECHO Anmeldung mit dem Administrator Account fehlgeschlagen!
ping 127.0.0.1 -n 3 > nul
GOTO START

:CHECK_1
REM erwartet die Eingabe der IP-Adresse und wertet das Ergebnis aus
TITLE SOPHOS DIENSTE MANAGER
CLS
ECHO.
ECHO %HEADER%
ECHO %TITEL%
ECHO %FOOTER%
ECHO.
ECHO. 
SET /P INPUT_IP="Bitte geben Sie eine IP ein (z.B. 192.168.100.14): "
IF "%INPUT_IP%" == "0000000" GOTO CHECK_1

:CHECK_2
REM Die Dienste werden für die IP gecheckt - funktioniert nur,
REM wenn man auf dem Zielcomputer auf Admin-Rechte besitzt (ADS).
TITLE SOPHOS DIENSTE MANAGER
CLS
ECHO.
ECHO %HEADER%
ECHO %TITEL%
ECHO %FOOTER%
ECHO.
ECHO.
ECHO ---------------------------------------------------
ECHO MOMENTANER ZUSTAND DER DIENSTE AUF %INPUT_IP%
ECHO ---------------------------------------------------
sc \\%INPUT_IP% query SAVService
sc \\%INPUT_IP% query SAVAdminService
sc \\%INPUT_IP% query "Sophos AutoUpdate Service"
ECHO.
ECHO.
PAUSE
GOTO VARIABLE

:DIENSTE
REM erwartet die Eingabe für das Untermenü und wertet diese aus
SET INPUT2=0000000
SET INPUT_IP2=0000000
TITLE SOPHOS DIENSTE MANAGER
CLS
ECHO.
ECHO %HEADER%
ECHO %TITEL%
ECHO %FOOTER%
ECHO.
ECHO.
ECHO Welchen Dienst wollen Sie neu starten? Es wird vorher
ECHO versucht, den Dienst zu stoppen und danne erneut zu
ECHO starten ... bitte uerberpruefen Sie das Ergebnis!
ECHO.
ECHO.
ECHO [1] Sophos OnAccess
ECHO [2] Sophos Remote Admin
ECHO [3] Sophos AutoUpdate
ECHO [4] Hautpmenue
ECHO.
SET /P INPUT2="INPUT: "
IF "%INPUT2%" == "1" (GOTO ONACCESS)
IF "%INPUT2%" == "2" (GOTO REMOTE)
IF "%INPUT2%" == "3" (GOTO AUTO)
IF "%INPUT2%" == "4" (GOTO VARIABLE)
IF "%INPUT2%" == "0000000" (GOTO DIENSTE)

:ONACCESS
REM erwartet die Eingabe der IP-Adresse und wertet das Ergebnis aus
TITLE SOPHOS DIENSTE MANAGER - ONACCESS Dienst
CLS
ECHO.
ECHO %HEADER%
ECHO %TITEL%
ECHO %FOOTER%
ECHO.
ECHO. 
SET /P INPUT_IP2="Bitte geben Sie eine IP ein (z.B. 192.168.100.14): "
IF "%INPUT_IP2%" == "0000000" (GOTO ONACCESS)

:ONACCESS_2
REM versucht den Dienst zu stoppen, zu starten und gibt dann das Ist-Ergbnis aus
ECHO.
ECHO --------------------------------------------------
ECHO VERSUCHE DEN DIENST AUF %INPUT_IP2% ZU STOPPEN
ECHO --------------------------------------------------
sc \\%INPUT_IP2% stop SAVService
ECHO.
ECHO wartet ca. 15 Sekunden auf Beendigung des Dienstes ...
ping 127.0.0.1 -n 15 >nul
ECHO --------------------------------------------------
ECHO VERSUCHE DEN DIENST AUF %INPUT_IP2% ZU STARTEN
ECHO --------------------------------------------------
sc \\%INPUT_IP2% start SAVService
ECHO.
ECHO --------------------------------------------------
ECHO MOMENTANER ZUSTAND DES DIENSTES AUF %INPUT_IP2%
ECHO --------------------------------------------------
sc \\%INPUT_IP2% query SAVService
ECHO.
ECHO.
PAUSE
GOTO DIENSTE

:REMOTE
REM erwartet die Eingabe der IP-Adresse und wertet das Ergebnis aus
TITLE SOPHOS DIENSTE MANAGER - RemoteAdmin Dienst
CLS
ECHO.
ECHO %HEADER%
ECHO %TITEL%
ECHO %FOOTER%
ECHO.
ECHO. 
SET /P INPUT_IP2="Bitte geben Sie eine IP ein (z.B. 192.168.100.14): "
IF "%INPUT_IP2%" == "0000000" (GOTO REMOTE)

:REMOTE_2
REM versucht den Dienst zu stoppen, zu starten und gibt dann das Ist-Ergbnis aus
ECHO.
ECHO --------------------------------------------------
ECHO VERSUCHE DEN DIENST AUF %INPUT_IP2% ZU STOPPEN
ECHO --------------------------------------------------
sc \\%INPUT_IP2% stop SAVAdminService
ECHO.
ECHO wartet ca. 15 Sekunden auf Beendigung des Dienstes ...
ping 127.0.0.1 -n 15 >nul
ECHO --------------------------------------------------
ECHO VERSUCHE DEN DIENST AUF %INPUT_IP2% ZU STARTEN
ECHO --------------------------------------------------
sc \\%INPUT_IP2% start SAVAdminService
ECHO.
ECHO --------------------------------------------------
ECHO MOMENTANER ZUSTAND DES DIENSTES AUF %INPUT_IP2%
ECHO --------------------------------------------------
sc \\%INPUT_IP2% query SAVAdminService
ECHO.
ECHO.
PAUSE
GOTO DIENSTE

:AUTO
REM erwartet die Eingabe der IP-Adresse und wertet das Ergebnis aus
TITLE SOPHOS DIENSTE MANAGER - AutoUpdate Dienst
CLS
ECHO.
ECHO %HEADER%
ECHO %TITEL%
ECHO %FOOTER%
ECHO.
ECHO. 
SET /P INPUT_IP2="Bitte geben Sie eine IP ein (z.B. 192.168.100.14): "
IF "%INPUT_IP2%" == "0000000" (GOTO AUTO)

:AUTO_2
REM versucht den Dienst zu stoppen, zu starten und gibt dann das Ist-Ergbnis aus
ECHO.
ECHO --------------------------------------------------
ECHO VERSUCHE DEN DIENST AUF %INPUT_IP2% ZU STOPPEN
ECHO --------------------------------------------------
sc \\%INPUT_IP2% stop "Sophos AutoUpdate Service"
ECHO.
ECHO wartet ca. 15 Sekunden auf Beendigung des Dienstes ...
ping 127.0.0.1 -n 15 >nul
ECHO --------------------------------------------------
ECHO VERSUCHE DEN DIENST AUF %INPUT_IP2% ZU STARTEN
ECHO --------------------------------------------------
sc \\%INPUT_IP2% start "Sophos AutoUpdate Service"
ECHO.
ECHO --------------------------------------------------
ECHO MOMENTANER ZUSTAND DES DIENSTES AUF %INPUT_IP2%
ECHO --------------------------------------------------
sc \\%INPUT_IP2% query "Sophos AutoUpdate Service"
ECHO.
ECHO.
PAUSE
GOTO DIENSTE

:ENDE
REM Ende
EXIT

Dieses Script erhebt keinen Anspruch auf Richtigkeit und Vollständigkeit. Auf die technische Funktion wird keine Gewähr übernommen. Alle Informationen sind nach bestem Wissen und Gewissen erstellt. :-)

Wenn es Fragen gibt, stehe ich natürlich gern zur Verfügung.