Another morph of the previous days utility script – does the following:
- Download the Remote Log File using SFTP
- Copy downloaded file to a timestamped filename
- Tail the Downloaded Log file at the end
@echo off
REM ######################################################
REM #### BEGIN - Do Not Touch - Misc Setup Variables: ####
REM ######################################################
REM SCRIPT_DIRECTORY is defined as the directory that this script currently exists in
SET "SCRIPT_DIRECTORY=%~dp0"
SET "SCRIPT_DIRECTORY=%SCRIPT_DIRECTORY:~0,-1%"
for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find "."') do set VARIABLE_DATETIME=%%a
set VARIABLE_YEAR=%VARIABLE_DATETIME:~0,4%
set VARIABLE_MONTH=%VARIABLE_DATETIME:~4,2%
set VARIABLE_DAY=%VARIABLE_DATETIME:~6,2%
set VARIABLE_HOUR=%VARIABLE_DATETIME:~8,2%
set VARIABLE_MINUTE=%VARIABLE_DATETIME:~10,2%
set VARIABLE_SECOND=%VARIABLE_DATETIME:~12,2%
set VARIABLE_TIMESTAMP=%VARIABLE_YEAR%-%VARIABLE_MONTH%-%VARIABLE_DAY%
REM ####################################################
REM #### END - Do Not Touch - Misc Setup Variables: ####
REM ####################################################
REM #######################################################
REM ### BEGIN - Customized Remote/Local Setup Variables ###
REM #######################################################
REM PLINK and PSFTP Application Paths
SET "PLINK=C:/Program Files/Putty/plink.exe"
SET "PSFTP=C:/Program Files/Putty/psftp.exe"
REM Setup - Remote Linux Host, Username, and Potential Command to Run
SET "REMOTE_HOSTNAME=hostname.com"
SET "REMOTE_USERNAME=username"
REM Setup - Private Key for Authentication
SET "LOCAL_PRIVATE_KEY=%SCRIPT_DIRECTORY%\private_key.ppk"
REM Setup - Local File To Transfer - Local Filename Variables including Name, Path, and Timestamp
SET "LOCAL_FILENAME=filename.log"
SET "LOCAL_DIRECTORY=%SCRIPT_DIRECTORY%\"
SET "LOCAL_PATH=%LOCAL_DIRECTORY%\%LOCAL_FILENAME%"
SET "LOCAL_PATH_TIMESTAMPED=%LOCAL_DIRECTORY%\%VARIABLE_TIMESTAMP%_%LOCAL_FILENAME%"
REM Setup - Final Transfer Path to Remote Server - Remote Directory and Final Filename to Transmit
SET "REMOTE_FILENAME=filename.log"
SET "REMOTE_DIRECTORY=/remote/log/directory"
SET "REMOTE_PATH=%REMOTE_DIRECTORY%/%REMOTE_FILENAME%"
SET "REMOTE_PATH_TIMESTAMPED=%REMOTE_DIRECTORY%/%VARIABLE_TIMESTAMP%_%REMOTE_FILENAME%"
SET "MISC_COMMAND=tail -f -n+1 %REMOTE_DIRECTORY%/%REMOTE_FILENAME%"
REM #####################################################
REM ### END - Customized Remote/Local Setup Variables ###
REM #####################################################
REM #####################################################
REM ### BEGIN - Script Actions Using Setup Variables ###
REM #####################################################
REM File Download and Staging - Remove Current Copies of Local File
del /f "%LOCAL_PATH%"
REM SFTP - Stage SFTP Commands in Temp Script
SET "TEMP_BATCH_FILE=%SCRIPT_DIRECTORY%\psftp.batch"
echo cd %REMOTE_DIRECTORY% > "%TEMP_BATCH_FILE%"
echo get "%REMOTE_FILENAME%" >> "%TEMP_BATCH_FILE%"
REM SFTP - Execute Transfer
"%PSFTP%" -i "%LOCAL_PRIVATE_KEY%" ^
-b "%TEMP_BATCH_FILE%" ^
"%REMOTE_USERNAME%@%REMOTE_HOSTNAME%"
REM SFTP - Remove Temp Script
del /f "%TEMP_BATCH_FILE%"
REM Copy File to Timestamp Name
copy /B /Y "%LOCAL_PATH%" "%LOCAL_PATH_TIMESTAMPED%"
REM Issue Command - Tail Live Log
"%PLINK%" -i "%LOCAL_PRIVATE_KEY%" ^
"%REMOTE_USERNAME%@%REMOTE_HOSTNAME%" ^
"%MISC_COMMAND%"
REM ###################################################
REM ### END - Script Actions Using Setup Variables ###
REM ###################################################
pause