Redémarrage auto des services windows avec Zabbix

Cette procédure permet de redémarrer automatiquement les services windows qui sont « STOPPED » alors qu’ils sont en démarrage automatique, devraient donc être « STARTED ».

1- Sur le serveur cible : Se connecter avec le compte Dcxservice
Copier le fichier C:\Batchs\Start_service_auto.bat (voir en fin d’article) de PSERV dans C:\Batchs
Creer le dossier c:\temp

2- Appliquer le template Tmp_Service_Auto_Restart sur le serveur

3- Facultatif : Modifier (supprimer) les services à exclure sur l’item (serveur cible) .

Liste des serveurs où cette fonctionnalité est implanté.

PSERV
PWEB
VTREND
PDTB1
VWCCO15P
VMEC

ATTENTION :

Le fichier de zabbix_agentd.conf de l’agent Zabbix (sur le serveur cible) doit contenir la ligne :
EnableRemoteCommands=1

———————————————————————————————————————–

C:\Batchs\Start_service_auto.bat

@echo off
cls
:: EF le 16/05/2012
:: MV le 17/01/2017 ajout du check for permissions, windows 2012 r2

setlocal enableDelayedExpansion

:: BatchGotAdmin
:————————————-
REM –> Check for permissions
>nul 2>&1 « %SYSTEMROOT%\system32\cacls.exe » « %SYSTEMROOT%\system32\config\system »

REM –> If error flag set, we do not have admin.
if ‘%errorlevel%’ NEQ ‘0’ (
echo Requesting administrative privileges…
goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
echo Set UAC = CreateObject^(« Shell.Application »^) > « %temp%\getadmin.vbs »
echo UAC.ShellExecute « %~s0 », «  », «  », « runas », 1 >> « %temp%\getadmin.vbs »

« %temp%\getadmin.vbs »
exit /B

:gotAdmin
if exist « %temp%\getadmin.vbs » ( del « %temp%\getadmin.vbs » )
pushd « %CD% »
CD /D « %~dp0″
:————————————–

set fic_log=c:\temp\service_to_restart.log
set fic_temp=c:\temp\service_to_restart.txt
set fic_start=c:\temp\service_to_start.txt
set fic_bat=c:\temp\service_to_start.bat
del /F %fic_log%
del /F %fic_temp%
del /F %fic_start%
del /F %fic_bat%

TIMEOUT /T 3 /NOBREAK 1>nul

TYPE NUL > %fic_start%
TYPE NUL > %fic_bat%

wmic service where (state= »stopped » and startmode= »Auto ») get name>%fic_temp%

for /f « delims= skip=1 » %%i in (‘type %fic_temp%’) do (
set w_serv=%%i
echo net start %%i>> %fic_start%
)

TIMEOUT /T 3 /NOBREAK 1>nul

for /f « tokens=1,2,3* delims=  » %%i in (%fic_start%) do (
set wstr=%%i %%j
set wser=%%k %%l
for /l %%a in (11,1,100) do if « !wser:~-1! »== »  » set wser=!wser:~0,-1!
set w_ligne=!wstr! »!wser! »
echo !w_ligne!
echo !w_ligne!>>%fic_bat%
echo TIMEOUT /T 5 /NOBREAK >> %fic_bat%
)

%fic_bat% > %fic_log%

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *