Ms-Dos - Script para control de servicios en servers

 
Vista:
sin imagen de perfil
Val: 8
Ha aumentado su posición en 2 puestos en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Script para control de servicios en servers

Publicado por Adrian (5 intervenciones) el 15/03/2018 16:31:12
Hola a todos!

Soy nuevo en el foro y quisiera hacerles una consulta sobre un código que me está haciendo doler mucho la cabeza.
A través del siguiente script quisiera controlar ciertos servicios en varios servidores remotos a los cuales tengo acceso a través de una VPN sin problema.
El inconveniente es que al querer optimizar el script para que haga los controles a través de un FOR llamando a una función no me está trayendo información cuando controla si lo encuentra corriendo o no.
Como adicional y para que comprendan el script tengo también un TXT con todos los servers listados, una carpeta (Services) donde hay varios TXTs con el nombre de cada server como nombre de archivo y como contenido los servicios de cada server. Y por otro lado otra carpeta (Outs) donde se genera un TXT para cada server.
Le agradeceré mucho si me pueden ayudar con esto.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
@echo off
Setlocal EnableDelayedExpansion
del /f /q .\Outs\out_*.txt
cls
for /f %%z in (.\Servers.txt) do call :Control %%z
exit
 
:Control
echo ANALYZING SERVICES IN SERVER "%1" ...
for /f "tokens=*" %%x in (.\Services\%1.txt) do (
sc \\%1 query %%x | find "STATE" | find "RUNNING"
if %errorlevel%==0 (echo Server: "%1" - Service: "%%x" - State: "RUNNING") else (echo Server: "%1" - Service: "%%x" - State: "NOT RUNNING") >> .\Outs\Out_%1.txt
)
exit

Y por otro lado, les comento que la idea es tener un script que pueda acceder a los servidores y que además de controlar ciertos servicios también pueda controlar el espacio en discos, memoria, CPU, etc. Si saben de algún script que pueda hacer eso y me lo pueden pasar se los agradeceré mucho también. Podría ser en VB también, lenguaje que manejo bien.

Desde ya, muchas gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Script para control de servicios en servers

Publicado por Antoni Masana (811 intervenciones) el 16/03/2018 11:57:40
Haber si asi funciona mejor

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@echo off
Setlocal EnableDelayedExpansion
del /f /q .\Outs\out_*.txt
cls
for /f %%z in (.\Servers.txt) do call :Control %%z
goto :eof
 
:Control
   echo ANALYZING SERVICES IN SERVER "%1" ...
   for /f "tokens=*" %%x in (.\Services\%1.txt) do call :Control_2 %1 %%x
   goto :eof
 
:Control_2
   sc \\%1 query %%x | find "STATE" | find "RUNNING"
   set errlvl = %ErrorLevel%
   if %errlvl% EQU 0 echo Server: "%1" - Service: "%2" - State: "RUNNING"
   if %errlvl% NEQ 0 echo Server: "%1" - Service: "%2" - State: "NOT RUNNING" >> .\Outs\Out_%1.txt
   goto :eof

Uno de los problemas es que al estar el ErrorLevel dentro del FOR esta validando el FOR y no el SC, raro pero es así.
Al realizar el CALL el ErrorLevel ya evalúa el SC.

Hay cosas que se supone deberían funcionar de una forma y no lo hacen. Hay ciertas cosas del MS-DOS que estan muy bien hasta que intentas hacerlas funcionar y dan mucho por ahí...

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 8
Ha aumentado su posición en 2 puestos en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Script para control de servicios en servers

Publicado por Adrian (5 intervenciones) el 20/03/2018 01:29:14
Hola Antoni!

Excelente lo tuyo!.. Anduvo perfecto! :)
Muchísimas gracias por responder a mi inquietud tan rápido y ayudarme tan eficientemente.

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar