Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- React
- dfs
- 파이썬
- docker
- VectoreStore
- frontend
- BFS
- DP
- ansible
- Algorithm
- javascript
- queue
- RDP
- 프로그래머스
- 알고리즘
- LLM
- jenkins
- CI/CD
- python
- Flask
- rag
- Infra
- typescript
- monorepo
- AI
- build
- turbo
- javascirpt
- Two Pointer
- modbus
Archives
- Today
- Total
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 설치 및 전송 스크립트
- Window는 기본적으로 SFTP 자동 전송 기능이 제공되지 않아 WinSCP를 활용 해야 한다.
- WinSCP 다운 - https://winscp.net/eng/download.php
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회)
'PJT > 영상 파일 재생 PJT' 카테고리의 다른 글
| [RDP 모니터링 프로젝트 #5] 운영 서버 - Flask API & SQLite 메타데이터 저장 (0) | 2025.11.30 |
|---|---|
| [RDP 모니터링 프로젝트 #3] 다중 RDP 접속 대응 및 세션별 PID 관리 전략 (0) | 2025.11.30 |
| [RDP 모니터링 프로젝트 #2] ffmpeg 기반 화면 녹화 Batch 스크립트 구현 (0) | 2025.11.30 |
| [RDP 모니터링 프로젝트 #1] Window Server - RDP 접속 이벤트 기반 녹화 구조 설계 (0) | 2025.11.30 |
| [RDP 모니터링 프로젝트 #0] RDP 화면 녹화 프로젝트 개요 (0) | 2025.11.29 |
