@ECHO OFF rem Script created by Todd Porter of Harmony Healthcare IT 12/20/18 rem This script assumes you have PuTTY x64 installed to C:\Program Files\PuTTY rem and that all files (batch/scripts/temp-files) are in the same folder location rem You must modify the CACHEKEY and SCRIPT section to reflect your SSH key location set IPFILE=IPList_temp.txt set runagain=n set OPTION=1 set RANGE= set IP= set SCAN=n set KEYCACHE=n :OPTION CLS ECHO (Working directory is set to C:\Program Files\PuTTY\scripts\) ECHO. ECHO 1. Single IP ECHO 2. IP list file ECHO 3. IP Range ECHO. set /p OPTION="Choose IP type:" IF %OPTION%==3 GOTO IPRANGE IF %OPTION%==2 GOTO IPLIST IF %OPTION%==1 GOTO SINGLEIP echo Please select a valid option GOTO OPTION :IPRANGE ECHO Enter the IP range(s) as in the following example. Use a space between multiple ranges: ECHO i.e. "10.21.0.15-99 10.21.1.15-100" set /p RANGE=Enter Range: echo %RANGE% > %IPFILE% GOTO SCRIPTNAME :SINGLEIP set /p IP=Enter IP: echo %IP% > %IPFILE% GOTO SCRIPTNAME :IPLIST set /p IP=Enter IPList filename: copy /Y %IP% %IPFILE% GOTO SCRIPTNAME :SCRIPTNAME set /p SCRIPT=Enter script name: if not exist %SCRIPT% ( echo filename does not exist! GOTO SCRIPTNAME ) ECHO. set /p SCAN=Do Nmap scan first? (recommended): if %SCAN%==n GOTO :RUNCACHE rem Check whether IP type is "range" as nmap cannot read an IP range from file and must be type directly in nmap command IF %OPTION%==3 GOTO NMAPRANGE :NMAP echo Scanning IPs for port 22 open... nmap --open -n -p22 -iL %IPFILE% -oG - | findstr /E Up > nmap_temp.txt GOTO AFTERNMAP :NMAPRANGE echo Scanning IPs for port 22 open... nmap --open -n -p22 %RANGE% -oG - | findstr /E Up > nmap_temp.txt :AFTERNMAP echo DONE rem nmap formatting is not correct, the following removes extra info for /f "tokens=2" %%A in (nmap_temp.txt) do echo %%A >> nmap_temp2.txt rem remove hidden space at end of IP (requires "repl" be in the batch file directory) type "nmap_temp2.txt" | repl " " "" > %IPFILE% :RUNCACHE set /p KEYCACHE=Scan and cache SSH key (y/n) ? if %KEYCACHE%==n GOTO SCRIPT :CACHEKEY rem Run through all IPs to cache the SSH Host Key if not already cached for /F "tokens=*" %%A in (%IPFILE%) do ( echo y | "C:\Program Files\PuTTY\pscp.exe" -l root -i "F:\SSH keypair\HHIT\SSH.ppk" -touch %%A:/tmp/test ) :SCRIPT for /F "tokens=1" %%A in (%IPFILE%) do ( "C:\Program Files\PuTTY\putty.exe" -ssh %%A -t -l root -i "F:\SSH keypair\HHIT\SSH.ppk" -m "C:\Program Files\PuTTY\scripts\%SCRIPT%" ) if exist nmap_temp.txt (del nmap_temp.txt) if exist nmap_temp2.txt (del nmap_temp2.txt) set runagain=n set /p runagain="Press Enter to Finish or y to rerun" if %runagain%==y GOTO OPTION