This script checks for trigger files indicating a need to reboot or clean up the QM production environment. If trigger files are found, it will reboot or clean up the QM servers, log details of the process, and notify administrators by email. It initializes variables, defines labels for the different processes, and calls other scripts to perform the actual reboot or cleanup functions.
1. @echo off
REM ======================================================================
REM
REM NAME: ProdQMCheck.cmd
REM
REM AUTHOR: Rob Jones, FHLB of Pittsburgh
REM DATE : 9/30/2011
REM
REM COMMENT: Checks for existence of trigger files to reboot QM PROD environment
REM
REM Updated By:
REM Rob Jones 9/22/2011
REM 12/14/2012
REM
REM Variables Used:
REM Fileloc1 = Are Where Reboot or Cleanup File Will Exist
REM FL1 = Actual Reboot or Cleanup File
REM Fowner1 = Person Who Invoked Action
REM Fdept1 = Department to Be Cleaned Up
REM
REM ======================================================================
REM echo on
REM ----------------------- Initialize Variables ----------------------------
set FileLoc1="BluePER1wShared DataBankwideServer Task RequestsQMProd"
REM set ENDLOOP=%FileLoc1%end.txt
REM +++++++++++++++++++++++++++++ MAIN ++++++++++++++++++++++++++++++++++++++
:MAIN
if exist %FileLoc1%aft.txt goto CopyAFT
if exist %FileLoc1%reboot.txt goto Boot
if exist %fileloc1%clean.txt goto Cleanup
goto NoReq
REM +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2. REM
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@
:Boot
if exist c:adminQMrestart.bak del c:adminQMrestart.bak
if exist c:adminQMrestart.log ren c:adminQMrestart.log QMrestart.bak
REM
REM >>>>>>>>>>>>> QM Reboot
REM
REM =========================================================================
REM ======================= Determine Who Is Rebooting ======================
REM =========================================================================
if exist %FileLoc1%reboot.txt set FL1=%FileLoc1%reboot.txt
echo ####### QM PROD REBOOT HAS BEEN TRIGERRED %DATE% %TIME% ####### >> c:adminQMrestart.log
echo. >> c:adminQMrestart.log
echo ...Copying Reboot File to Local Drive to ID Owner>> c:adminQMrestart.log
echo.>> c:adminQMrestart.log
move /y %FL1% C:admin
set FL1=c:adminreboot.txt
REM dir /q %FL1% | c:windowssystem32find /i "reboot.txt" > c:adminfowner1.txt
for /f "tokens=1,2" %%a in (%FL1%) do (call :setvar %%a %%b)
REM =========================================================================
REM ==================== BLAT Start of Reboot to Admins =====================
REM =========================================================================
echo Beginning %fdept1% QM PROD restart process requested by %fowner1% on %DATE% at %TIME% >> c:adminQMrestart.log
REM del c:adminfowner1.txt
tealsys1wpublicblatblat "c:adminQMrestart.log" -to winadmins@company.com -subject "%fdept1% QM PROD is Being Restarted from
%ComputerName%" -f %COMPUTERNAME%@company.net -q -server mailserver
echo Beginning %fdept1% QM PROD restart process requested by %fowner1% on %DATE% at %TIME% >> c:admintracking.log
echo. >> c:adminQMrestart.log
echo * * * * * * * * * * * * * * >> c:adminQMrestart.log
echo. >> c:adminQMrestart.log
REM =========================================================================
REM ============================= Clear Files ===============================
REM =========================================================================
if exist %FL1% del %FL1% >> c:adminQMrestart.log
set FL1=%fileloc1%reboot.txt
3. if exist %FL1% del %FL1% >> c:adminQMrestart.log
if not exist %FL1% echo %FL1% file deleted successfully >> c:adminQMrestart.log
if exist %FL1% echo %FL1% file NOT deleted successfully - PLEASE ADDRESS! >> c:adminQMrestart.log
REM =========================================================================
REM ===========================** ACTUAL RESTART **==========================
REM =========================================================================
call tealsys1wpublicQMrestart.cmd PROD %fowner1% c:adminQMrestart.log %fdept1%
REM =========================================================================
REM ==================== Restart & Going Back To Sleep ======================
REM =========================================================================
echo. >> c:adminQMrestart.log
echo ... Returning from %fdept1% PROD QMRestart and Going Back Into Wait Cycle>> c:adminQMrestart.log
echo. >> c:adminQMrestart.log
echo * * * * * * * * * * * * * * >> c:adminQMrestart.log
REM if exist c:adminQMrestart.log del c:adminQMrestart.log
echo Ending %fdept1% QM PROD restart process on %DATE% at %TIME% >> c:admintracking.log
goto AllDone
REM
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@
REM %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
:Cleanup
if exist c:adminQMclean.bak del c:adminQMclean.bak
if exist c:adminQMclean.log ren c:adminQMclean.log QMclean.bak
REM
REM >>>>>>>>>>>>> QM Cleanup
REM
REM =========================================================================
REM =================== Determine Who Is Invoking Cleanup ===================
REM =========================================================================
if exist %fileloc1%clean.txt set FL1=%fileloc1%clean.txt
echo ####### QM PROD CLEANUP HAS BEEN TRIGGERED %DATE% %TIME% ####### >> c:adminQMclean.log
echo. >> c:adminQMclean.log
echo ...Copying Cleanup Trigger File to Local Drive to ID Owner>> c:adminQMclean.log
echo.>> c:adminQMclean.log
4. move /y %FL1% C:admin
set FL1=c:adminclean.txt
for /f "tokens=1,2" %%a in (%FL1%) do (call :setvar %%a %%b)
goto next
:Setvar
set fowner1=%1
set fdept1=%2
goto :eof
:Next
REM =========================================================================
REM ==================== BLAT Start of Clean-up to Admins ===================
REM =========================================================================
echo Beginning %fdept1% QM PROD CLEANUP process requested by %fowner1% on %DATE% at %TIME% >> c:adminQMclean.log
tealsys1wpublicblatblat "c:adminQMclean.log" -to winadmins@company.com -subject "%fdept1% QM PROD Cleanup invoked from
%ComputerName%" -f %COMPUTERNAME%@company.net -q -server mailserver
echo Beginning %fdept1% QM PROD CLEANUP process requested by %fowner1% on %DATE% at %TIME% >> c:admintracking.log
echo. >> c:adminQMclean.log
echo * * * * * * * * * * * * * * >> c:adminQMclean.log
echo. >> c:adminQMclean.log
REM =========================================================================
REM ============================= Clear Files =============================
REM =========================================================================
if exist %FL1% del %FL1% >> c:adminQMclean.log
set FL1=%fileloc1%clean.txt
if exist %FL1% del %FL1% >> c:adminQMclean.log
if not exist %FL1% echo %FL1% file deleted successfully >> c:adminQMclean.log
if exist %FL1% echo %FL1% file NOT deleted successfully - PLEASE ADDRESS! >> c:adminQMclean.log
REM =========================================================================
REM ============================ Actual Cleanup =============================
REM =========================================================================
call tealsys1wpublicQMClean.cmd PROD %fowner1% c:adminQMclean.log %fdept1%
REM =========================================================================
REM ========================= Going Back To Sleep ===========================
REM =========================================================================
5. echo. >> c:adminQMclean.log
echo ... Returning from %fdept1% PROD QMClean and Going Back Into Wait Cycle>> c:adminQMclean.log
echo. >> c:adminQMclean.log
echo * * * * * * * * * * * * * * >> c:adminQMclean.log
REM if exist c:adminQMclean.log del c:adminQMclean.log
echo Ending %fdept1% QM PROD Cleanup process on %DATE% at %TIME% >> c:admintracking.log
goto AllDone
REM %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
:NoReq
REM
REM >>>>>>>>>>>>>> PASS ON QM Prod Reboot
REM
echo %DATE% %TIME% - No files exist - No Prod Reboot or Cleanup>> c:adminnorequests.log
REM :Sleap
REM SLEEP 300
REM if not exist %ENDLOOP% Goto Main
goto AllDone
:CopyAFT
echo.
echo ================== Copying AFT License File To QM Servers ====================
echo.
call tealsys1wpublicQM-AFT.cmd
:AllDone
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
@echo off
REM ======================================================================
REM
REM CMD File -- Created with SAPIEN Technologies PrimalScript 2009
REM
6. REM NAME: qmRestart.cmd
REM
REM AUTHOR: Rob Jones , Federal Home Loan Bank of Pittsburgh
REM DATE : 5/5/2011
REM
REM COMMENT: Reboots qm servers
REM Called by file watcher with 3 parameters:
REM 1st is which region to reboot
REM 2nd is owner of watcher file (requestor)
REM 3rd is output log file which will get emailed
REM Updated By:
REM Rob Jones 9/22/2011
REM
REM ======================================================================
REM echo on
if "%1"=="" goto syntax
if "%2"=="" goto syntax
if "%3"=="" goto syntax
REM if exist c:adminsumrestart.bak del c:adminsumrestart.bak
REM if exist %3 ren %3 sumrestart.bak
if "%1" == "PROD" goto ProdBoot
if "%1" == "UAT" goto UATBoot
if "%1" == "UATV" goto UATVBoot
goto syntax
REM ******************
REM PROD server reboot
REM ******************
:ProdBoot
set LOOPCNTR=
echo. >> %3
echo qm Production server reboot started on %DATE% at %TIME% >> %3
echo. >> %3
7. echo * * * Requested by %2 * * * >> %3
echo. >> %3
servutil1wpublicpstoolspsshutdown -r -t 5 @servutil1wpublicqmprodservers.txt
REM call some magic ping check and determine servers are up
:PRODCHEK
servutil1wpublicsleep 120
set /a LOOPCNTR+=1
Set LOOPRET=
If "%LOOPCNTR%"=="20" Goto PROB
IF not "%servqm1WUP%"=="1" Call servutil1wpublicFindcomp servqm1W
If "%LOOPRET%"=="1" Goto PRODCHEK
IF not "%servqm2WUP%"=="1" Call servutil1wpublicFindcomp servqm2W
If "%LOOPRET%"=="1" Goto PRODCHEK
IF not "%servqm3WUP%"=="1" Call servutil1wpublicFindcomp servqm3W
If "%LOOPRET%"=="1" Goto PRODCHEK
IF not "%servqm4WUP%"=="1" Call servutil1wpublicFindcomp servqm4W
If "%LOOPRET%"=="1" Goto PRODCHEK
IF not "%servqm5WUP%"=="1" Call servutil1wpublicFindcomp servqm5W
If "%LOOPRET%"=="1" Goto PRODCHEK
IF not "%servqm6WUP%"=="1" Call servutil1wpublicFindcomp servqm6W
If "%LOOPRET%"=="1" Goto PRODCHEK
REM goto PRODCHEK until verified back up then exit to PRODUP
REM After 20 Failed verification loops administrators will be notified.
:PRODUP
REM Finish Verification that servers rebooted
servutil1wpublicuptime servqm1w >> %3
servutil1wpublicuptime servqm2w >> %3
servutil1wpublicuptime servqm3w >> %3
servutil1wpublicuptime servqm4w >> %3
servutil1wpublicuptime servqm5w >> %3
servutil1wpublicuptime servqm6w >> %3
echo. >> %3
8. echo qm Production server reboot completed on %DATE% at %TIME% >> %3
echo. >> %3
servutil1wpublicblatblat "%3" -to winadmins@company.com -subject "qm Production servers restarted" -f %COMPUTERNAME%@company.net -q
-server mailserver
servutil1wpublicblatblat "%3" -to qmfs@company.com -subject "qm Production servers restarted" -f %COMPUTERNAME%@company.net -q -server
mailserver
goto AllDone
REM ******************
REM UAT server reboot
REM ******************
:UATBoot
set LOOPCNTR=
echo. >> %3
echo qm UAT server reboot started on %DATE% at %TIME% >> %3
echo. >> %3
echo * * * Requested by %2 * * * >> %3
echo. >> %3
servutil1wpublicpstoolspsshutdown -r -t 5 @servutil1wpublicqmuatservers.txt
REM call some magic ping check and determine servers are up
:UATCHEK
servutil1wpublicsleep 120
set /a LOOPCNTR+=1
Set LOOPRET=
If "%LOOPCNTR%"=="20" Goto PROB
IF not "%JADEqm1WUP%"=="1" Call servutil1wpublicFindcomp JADEqm1W
If "%LOOPRET%"=="1" Goto UATCHEK
IF not "%JADEqm2WUP%"=="1" Call servutil1wpublicFindcomp JADEqm2W
If "%LOOPRET%"=="1" Goto UATCHEK
IF not "%JADEqm3WUP%"=="1" Call servutil1wpublicFindcomp JADEqm3W
If "%LOOPRET%"=="1" Goto UATCHEK
IF not "%JADEqm4WUP%"=="1" Call servutil1wpublicFindcomp JADEqm4W
9. If "%LOOPRET%"=="1" Goto UATCHEK
REM goto UATCHEK until verified back up then exit to UATUP
REM After 20 Failed verification loops administrators will be notified.
:UATUP
REM Finish Verification that servers rebooted
servutil1wpublicuptime jadeqm1w >> %3
servutil1wpublicuptime jadeqm2w >> %3
servutil1wpublicuptime jadeqm3w >> %3
servutil1wpublicuptime jadeqm4w >> %3
echo. >> %3
echo qm UAT server reboot completed on %DATE% at %TIME% >> %3
echo. >> %3
servutil1wpublicblatblat "%3" -to winadmins@company.com -subject "qm UAT servers restarted" -f %COMPUTERNAME%@company.net -q -server
mailserver
servutil1wpublicblatblat "%3" -to qmfs@company.com -subject "qm UAT servers restarted" -f %COMPUTERNAME%@company.net -q -server
mailserver
goto AllDone
REM ******************
REM UATV server reboot
REM ******************
:UATVBoot
set LOOPCNTR=
echo. >> %3
echo qm UAT Virtual server reboot started on %DATE% at %TIME% >> %3
echo. >> %3
echo * * * Requested by %2 * * * >> %3
echo. >> %3
servutil1wpublicpstoolspsshutdown /accepteula -r -t 5 @servutil1wpublicqmuatvservers.txt
echo PSShutdown command was issued >> %3
echo. >> %3
10. echo Ping Check now starting... >> %3
echo. >> %3
REM call some magic ping check and determine servers are up
:UATVCHEK
servutil1wpublicsleep 120
set /a LOOPCNTR+=1
Set LOOPRET=
If "%LOOPCNTR%"=="20" Goto PROB
IF not "%JADEqm1WvUP%"=="1" Call servutil1wpublicFindcomp JADEqm1Wv
If "%LOOPRET%"=="1" Goto UATVCHEK
IF not "%JADEqm2WvUP%"=="1" Call servutil1wpublicFindcomp JADEqm2Wv
If "%LOOPRET%"=="1" Goto UATVCHEK
IF not "%JADEqm3WvUP%"=="1" Call servutil1wpublicFindcomp JADEqm3Wv
If "%LOOPRET%"=="1" Goto UATVCHEK
IF not "%JADEqm4WvUP%"=="1" Call servutil1wpublicFindcomp JADEqm4Wv
If "%LOOPRET%"=="1" Goto UATVCHEK
REM goto UATVCHEK until verified back up then exit to UATVUP
REM After 20 Failed verification loops administrators will be notified.
:UATVUP
REM Finish Verification that servers rebooted
servutil1wpublicuptime jadeqm1wv >> %3
servutil1wpublicuptime jadeqm2wv >> %3
servutil1wpublicuptime jadeqm3wv >> %3
servutil1wpublicuptime jadeqm4wv >> %3
echo. >> %3
echo qm UAT Virtual server reboot completed on %DATE% at %TIME% >> %3
echo. >> %3
servutil1wpublicblatblat "%3" -to winadmins@company.com -subject "qm UAT Virtual servers restarted from %ComputerName%" -f
%COMPUTERNAME%@company.net -q -server mailserver
servutil1wpublicblatblat "%3" -to qmfs@company.com -subject "qm UAT Virtual servers restarted" -f %COMPUTERNAME%@company.net -q -server
mailserver
goto AllDone