Link to home
Start Free TrialLog in
Avatar of Luis Diaz
Luis DiazFlag for Colombia

asked on

Batch or VBscript : stop/start tomcat locally

Hello experts,

I have in multiple machines tomcat app I would like through a script to automatically stop the tomcats of every server without connecting to every machine that means to launch from my local machine the script and stop-start the tomcats application of different servers.
All the servers have Windows server 2008 OS.

Ex:

IP machine B

Machine A
stop
start tomcat

IP machine B
stop
start tomcat


Thank you in advance for your help.
Avatar of Steve Knight
Steve Knight
Flag of United Kingdom of Great Britain and Northern Ireland image

If they are a member of a domain most easily then don't need to authenticate to each and can just use SC.exe

e.g. stop service, wait 10 secs, start it again.

sc \\servername stop "Service Name"
ping 127.0.0.1 -n 10
sc \\servername start "Service Name"
sc \\severname query "Service Name"

The Service name is the one shown in a list from sc query and may not match what you see in services GUI.

If you have a handful of machines you can just list the commands, or do it as a subroutine for each, or read from a text file, e.g.

@echo off
set error=
set logfile=logfile.txt
del %logfile% 2>NUL

call :restart Server1 "ServiceName"
call :restart Server2 "ServiceName1"
call :restart Server3 "ServiceName1"

if "%error%"=="" (
  echo No errors
) ELSE (
  echo Errors:
  echo %error%
)
START "" "%logfile%"
pause

exit /b

:restart
REM Restart service listed
sc \\%1 stop %2
if errorlevel 1 set error=%error%[%1 - %2 - %errorlevel% STOP],
ping 127.0.0.1 -n 5
sc \\%1 start %2
if errorlevel 1 set error=%error%[%1 - %2 - %errorlevel% START],
sc \\%1 query %2 >> %logfile%
exit /b

Open in new window

To read a text file instead, replace:

call :restart Server1 "ServiceName"
call :restart Server2 "ServiceName1"
call :restart Server3 "ServiceName1"

Open in new window


with a for loop to read the file:

for /f "delims=," %%a in ('type yourtextfile.txt') do call :restart %%a %%~b

Open in new window


and your text file formatted as:

Server1 "ServiceName"
Server2 "ServiceName1"
etc.

Open in new window

Avatar of Luis Diaz

ASKER

Hello Steve Knight,

I tried your sc solution and it works. What is the pourpose of  "ping 127.0.0.1 -n 10"?

Concerning the second solution Is it possible to:
add an a specific path to ouput the log file ? And have a script just for stopping the tomcat and another for the restart?

Thank you in advance .
Sure. Ping just to add delay betwern stop and start. Probably not needed for most, remove it and see.

You can just save batch again leaving out the sc stop or start line.

Can post example but on phone at mo.

Steve
ASKER CERTIFIED SOLUTION
Avatar of Steve Knight
Steve Knight
Flag of United Kingdom of Great Britain and Northern Ireland image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial