DM Log

[RDP 모니터링 프로젝트 #4] Window Scheduler + SFTP 자동 전송 시스템 구축 본문

PJT/영상 파일 재생 PJT

[RDP 모니터링 프로젝트 #4] Window Scheduler + SFTP 자동 전송 시스템 구축

Dev. Dong 2025. 11. 30. 19:24

개요

chapter 1~3까지는 Window Server 내부 녹화 시스템을 구축하는 단계으며, chapter 4의 경우는 녹화된 영상 파일을 매일 새벽에 자동으로 중앙 서버로 전송하는 구조 만드는 내용을 담고 있다. 기본적으로 설정한 조건은 아래와 같다.

  • Window 서버에서 운영 서버로 전송 가능하며, 운영 서버에서 Window 서버로는 접근 불가
  • 전송 방식은 SFTP로 한정 하여 진행 (WinSCP 사용)
  • 매일 새벽 00:01분에 자동 전송
  • 전송 성공 시 Window 서버 내 파일 삭제
  • 전송 실패 시 다음날 자동 재시도

WinSCP 설치 및 전송 스크립트

 

WinSCP :: Official Site :: Download

WinSCP 6.5 Download WinSCP 6.5 is a major application update. New features and enhancements include: Thumbnail view in file panels. Three selectable sizes of toolbar icons, showing slightly larger size by default. Switching to Segoe UI font with slightly l

winscp.net

Hostkey 없이 연결하는 방법

보안을 위해 hostkey 옵션을 스크립트에 사용해야 하지만, 생략을 위해 레지스트리에 자동 저장 되도록 GUI로 SFTP 1회 로그인

C:\rdp_monitor\scripts\WinSCP\WinSCP.exe

open sftp://username:password@IP

send_files.bat

@echo off
setlocal

:: 환경 설정
set BASE_DIR=C:\rdp_monitor
set SCRIPT_DIR=%BASE_DIR%\scripts
set RECORD_DIR=%BASE_DIR%\record
set LOG_DIR=%BASE_DIR%\logs

:: 운영 서버 정보
set SFTP_USER=myuser
set SFTP_PASS=mypass
set SFTP_HOST=10.0.0.15
set SERVER_NAME=server1

:: 임시 스크립트 파일 경로
set TEMP_SCRIPT=%SCRIPT_DIR%\_sftp_temp.txt

:: 오늘 날짜
for /f "tokens=1-3 delims=- " %%a in ("%date%") do (
    set YYYY=%%c
    set MM=%%a
    set DD=%%b
)
set TODAY=%YYYY%%MM%%DD%
set TRANSFER_LOG=%LOG_DIR%\transfer_%TODAY%.log

echo [START] %date% %time% >> "%TRANSFER_LOG%"

:: 1) WinSCP용 임시 스크립트 자동 생성
echo option batch continue> "%TEMP_SCRIPT%"
echo option confirm off>> "%TEMP_SCRIPT%"
echo option hostnamefingerprint off>> "%TEMP_SCRIPT%"
echo.>> "%TEMP_SCRIPT%"

echo open sftp://%SFTP_USER%:%SFTP_PASS%@%SFTP_HOST% >> "%TEMP_SCRIPT%"
echo lcd %RECORD_DIR% >> "%TEMP_SCRIPT%"
echo cd /data/rdp-video/%SERVER_NAME% >> "%TEMP_SCRIPT%"
echo put * -delete >> "%TEMP_SCRIPT%"
echo exit >> "%TEMP_SCRIPT%"

:: 2) WinSCP 실행
"C:\Program Files (x86)\WinSCP\WinSCP.com" /script="%TEMP_SCRIPT%" /log="%TRANSFER_LOG%"

:: 3) 임시 스크립트 삭제
del "%TEMP_SCRIPT%"

echo [END] %date% %time% >> "%TRANSFER_LOG%"

exit /b 0

send_files_test.bat

@echo off
setlocal

set BASE_DIR=C:\rdp_monitor
set SCRIPT_DIR=%BASE_DIR%\scripts
set RECORD_DIR=%BASE_DIR%\record
set LOG_DIR=%BASE_DIR%\logs

:: 운영 서버 정보
set SFTP_USER=myuser
set SFTP_PASS=mypass
set SFTP_HOST=10.0.0.15
set SERVER_NAME=server1

:: 임시 스크립트 파일
set TEMP_SCRIPT=%SCRIPT_DIR%\_sftp_temp_test.txt
set TEST_LOG=%LOG_DIR%\transfer_test.log

echo [TEST START] %date% %time% >> "%TEST_LOG%"

echo option batch continue> "%TEMP_SCRIPT%"
echo option confirm off>> "%TEMP_SCRIPT%"
echo option hostnamefingerprint off>> "%TEMP_SCRIPT%"
echo.>> "%TEMP_SCRIPT%"

echo open sftp://%SFTP_USER%:%SFTP_PASS%@%SFTP_HOST% >> "%TEMP_SCRIPT%"
echo lcd %RECORD_DIR% >> "%TEMP_SCRIPT%"
echo cd /data/rdp-video/%SERVER_NAME% >> "%TEMP_SCRIPT%"
echo put * -delete >> "%TEMP_SCRIPT%"
echo exit >> "%TEMP_SCRIPT%"

"C:\Program Files (x86)\WinSCP\WinSCP.com" /script="%TEMP_SCRIPT%" /log="%TEST_LOG%"

del "%TEMP_SCRIPT%"

echo [TEST END] %date% %time% >> "%TEST_LOG%"
pause
exit /b 0

성공/실패 로그 예시

  • 성공
File transferred successfully.
OK
  • 실패
Connection failed.
Host is not communicating.
(ESshFatal)

Scheduler 설정

  • 작성 스케줄러 → 새 작업
  • 트리거: 매일 0:01
  • 동작: send_files.bat 실행
  • 계정: SYSTEM
  • 실패 시 자동 재시도 설정 (2~3회)