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