Monday, September 7, 2026

.::: Bat Script sftp windows to Server Linux with Scheduler & password using hiddep password or private key .ppk (run from destination server) using putty psftp.exe :::.

 

correlation https://teguhth.blogspot.com/2026/09/bat-script-sftp-windows-to-server-linux.html

1. create sshkey without password

C:\Windows\System32>type %USERPROFILE%\.ssh\id_rsa.pub | ssh ftpaccess@10.10.10.90 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

C:\Windows\System32>
C:\Windows\System32>sftp ftpaccess@10.10.10.90
Connected to 10.10.10.90.
sftp> exit
 


2. create .ppk using puttygen.exe
 



3. testing ppk. using psftp


"D:\software\psftp.exe" -i "%USERPROFILE%\.ssh\id_rsa.ppk" ftpaccess@10.10.10.90
 


4. Script just sftp 

sftp1_ok_justsftp_sshkey

@echo off
setlocal

set SFTP_SERVER=10.10.10.90
set SFTP_USER=ftpaccess
REM set SFTP_PASSWORD=xxxx

set REMOTE_DIR=/media/backup
set LOCAL_DIR=D:\temp

set SFTP_SCRIPT=D:\other\windows\sftpbat\sftp_download.txt

echo ========================================
echo SFTP DOWNLOAD ALL FILES
echo ========================================
echo Remote : %REMOTE_DIR%
echo Server : %SFTP_SERVER%
echo Local  : %LOCAL_DIR%
echo ========================================

if not exist "%LOCAL_DIR%" (
    mkdir "%LOCAL_DIR%"
)

(
echo cd %REMOTE_DIR%
echo lcd %LOCAL_DIR%
echo mget *
echo bye
) > "%SFTP_SCRIPT%"

REM "D:\software\psftp.exe" ^
REM -batch ^
 REM   -pw "%SFTP_PASSWORD%" ^
REM    %SFTP_USER%@%SFTP_SERVER% ^
 REM   -b "%SFTP_SCRIPT%"
    
"D:\software\psftp.exe" -i "%USERPROFILE%\.ssh\id_rsa.ppk"  %SFTP_USER%@%SFTP_SERVER% -b "%SFTP_SCRIPT%"

if %ERRORLEVEL% EQU 0 (
    echo.
    echo SFTP DOWNLOAD SUCCESS
) else (
    echo.
    echo SFTP DOWNLOAD FAILED
    exit /b 1
)

echo.
echo File hasil:
dir "%LOCAL_DIR%"

echo.
echo Selesai.
 



5. Script sftp using folder date yyyymmdd

sftp2_ok_folderdate_sshkey
 
@echo off
setlocal

set SFTP_SERVER=10.10.10.90
set SFTP_USER=ftpaccess

set BASE_REMOTE_DIR=/media/backup
set BASE_LOCAL_DIR=D:\temp

set SFTP_SCRIPT=D:\other\windows\sftpbat\sftp_download.txt

REM ========================================
REM GET DATE YYYYMMDD
REM ========================================

for /f "tokens=2 delims= " %%a in ("%date%") do set TODAY=%%a

for /f "tokens=1-3 delims=/" %%a in ("%TODAY%") do (
    set MM=%%a
    set DD=%%b
    set YYYY=%%c
)

REM ========================================
REM REMOTE & LOCAL DIRECTORY
REM ========================================

set DATE_FOLDER=%YYYY%%MM%%DD%

set REMOTE_DIR=%BASE_REMOTE_DIR%/%DATE_FOLDER%
set LOCAL_DIR=%BASE_LOCAL_DIR%\%DATE_FOLDER%

echo ========================================
echo SFTP DOWNLOAD ALL FILES
echo ========================================
echo Date   : %DATE_FOLDER%
echo Remote : %REMOTE_DIR%
echo Server : %SFTP_SERVER%
echo Local  : %LOCAL_DIR%
echo ========================================

REM ========================================
REM CREATE LOCAL DIRECTORY
REM ========================================

if not exist "%LOCAL_DIR%" (
    mkdir "%LOCAL_DIR%"
)

REM ========================================
REM CREATE SFTP SCRIPT
REM ========================================

(
echo cd %REMOTE_DIR%
echo lcd %LOCAL_DIR%
echo mget *
echo bye
) > "%SFTP_SCRIPT%"

echo.
echo SFTP command:
type "%SFTP_SCRIPT%"
echo.

REM ========================================
REM RUN SFTP
REM ========================================

REM "D:\software\psftp.exe" ^
REM -batch ^
 REM   -pw "%SFTP_PASSWORD%" ^
REM    %SFTP_USER%@%SFTP_SERVER% ^
 REM   -b "%SFTP_SCRIPT%"
    
"D:\software\psftp.exe" -i "%USERPROFILE%\.ssh\id_rsa.ppk"  %SFTP_USER%@%SFTP_SERVER% -b "%SFTP_SCRIPT%"

if %ERRORLEVEL% EQU 0 (
    echo.
    echo SFTP DOWNLOAD SUCCESS
) else (
    echo.
    echo SFTP DOWNLOAD FAILED
    exit /b 1
)

echo.
echo File hasil:
dir "%LOCAL_DIR%"

echo.
echo Selesai.
 

6. Script sftp using folder date yyyy/mm/dd sftp3_ok_folderdate yyyy garing mm _sskey


@echo off
setlocal

REM ========================================
REM SFTP DOWNLOAD CONFIGURATION
REM ========================================

set SFTP_SERVER=10.10.10.90
set SFTP_USER=ftpaccess

REM Tidak perlu password karena menggunakan SSH Key
REM set SFTP_PASSWORD=xxxx

set BASE_REMOTE_DIR=/media/backup
set BASE_LOCAL_DIR=D:\temp

set SFTP_SCRIPT=D:\other\windows\sftpbat\sftp_download.txt

REM Private Key PSFTP
set SSH_KEY=%USERPROFILE%\.ssh\id_rsa.ppk


REM ========================================
REM GET DATE
REM FORMAT:
REM YYYY
REM MM
REM DD
REM ========================================

for /f %%A in ('powershell -NoProfile -Command "Get-Date -Format yyyy"') do set YYYY=%%A
for /f %%A in ('powershell -NoProfile -Command "Get-Date -Format MM"') do set MM=%%A
for /f %%A in ('powershell -NoProfile -Command "Get-Date -Format dd"') do set DD=%%A


REM ========================================
REM REMOTE & LOCAL DIRECTORY
REM ========================================

set DATE_FOLDER=%YYYY%/%MM%/%DD%

set REMOTE_DIR=%BASE_REMOTE_DIR%/%YYYY%/%MM%/%DD%
set LOCAL_DIR=%BASE_LOCAL_DIR%\%YYYY%\%MM%\%DD%


REM ========================================
REM DISPLAY INFORMATION
REM ========================================

echo ========================================
echo SFTP DOWNLOAD ALL FILES
echo ========================================
echo Date   : %YYYY%-%MM%-%DD%
echo Remote : %REMOTE_DIR%
echo Server : %SFTP_SERVER%
echo Local  : %LOCAL_DIR%
echo ========================================


REM ========================================
REM CREATE LOCAL DIRECTORY
REM ========================================

if not exist "%LOCAL_DIR%" (
    echo.
    echo Creating local directory...
    mkdir "%LOCAL_DIR%"
)


REM ========================================
REM CREATE SFTP SCRIPT
REM ========================================

(
echo pwd
echo cd %REMOTE_DIR%
echo pwd
echo ls
echo lcd %LOCAL_DIR%
echo mget *
echo bye
) > "%SFTP_SCRIPT%"


REM ========================================
REM DISPLAY SFTP COMMAND
REM ========================================

echo.
echo SFTP command:
echo ----------------------------------------
type "%SFTP_SCRIPT%"
echo ----------------------------------------
echo.


REM ========================================
REM RUN PSFTP USING SSH KEY
REM ========================================

echo Connecting to SFTP server...
echo.

REM "D:\software\psftp.exe" ^
REM -batch ^
 REM   -pw "%SFTP_PASSWORD%" ^
REM    %SFTP_USER%@%SFTP_SERVER% ^
 REM   -b "%SFTP_SCRIPT%"
    
"D:\software\psftp.exe" -i "%USERPROFILE%\.ssh\id_rsa.ppk"  %SFTP_USER%@%SFTP_SERVER% -b "%SFTP_SCRIPT%"
set SFTP_RESULT=%ERRORLEVEL%


REM ========================================
REM CHECK RESULT
REM ========================================

if %SFTP_RESULT% EQU 0 (
    echo.
    echo ========================================
    echo SFTP DOWNLOAD SUCCESS
    echo ========================================
) else (
    echo.
    echo ========================================
    echo SFTP DOWNLOAD FAILED
    echo ========================================
    echo ERRORLEVEL : %SFTP_RESULT%
    echo.
    exit /b 1
)


REM ========================================
REM SHOW DOWNLOADED FILES
REM ========================================

echo.
echo File hasil:
echo ----------------------------------------

dir "%LOCAL_DIR%"

echo ----------------------------------------
echo.
echo Selesai.

endlocal
 

 

No comments:

Post a Comment

Popular Posts