Open Source

winscp와 python을 이용한 FTP 다운로드

Pydole 2019. 5. 3. 20:27

 자동으로 FTP를 이용하여 백업을 받을 일이 생겨서 알아보던 중 WinSCP 프로그램이 Command-Line을 제공해 줌을

찾았다. 

       

     Docs URL : https://winscp.net/eng/docs/commandline

     Download : https://winscp.net/eng/download.php

 

 

WinSCP는 FTP, SFTP, SCP, S3 윈도우 무료 클라이언트다. 실제로 리눅스를 SCP로 접근할 때 많이 쓰곤 하였다.

 

자세한 옵션은 위 URL을 참고한다. (아직 이것저것 실험 중...)

 

 

WinSCP를 설치하면 기본적으로 C:\Program Files (x86)\WinSCP에 설치되고, 아래와 같이 프로그램들이 설치된다

 

 

이중 WinSCP.com 파일을 이용하여 간단한 배치를 만들어 보겠다.

 

기본 명령어는 아래와 같다고, example.txt는 접속정보 및 옵션을 기입한다.

 

---------------------------------------- example.txt ----------------------------------------

 

open ftp://[ user ]:[ password ]@192.168.x.x              # 접속정보
option batch on
option confirm off
get * [ path ]
close
exit

 

 

C:\Program Files (x86)\WinSCP> WinSCP.com /ini=nul /script=example.txt

 

 

정상적으로 백업이 잘 된다. 하지만, 이미 다음 배치를 돌릴때는 받은 파일은 SKIP해야 하지 않겠는가.

 

그래서 option confirm on으로 변경하고, 다시 실행해보았다.

위와 같이 대화식으로 바뀌면서 실행이 종료되어 버렸다. ㅠㅠ

 

그래서, 자동으로 키입력 응답해주기 위해 파이썬을 이용하기로 하였다.

 

 

 

import os
import keyboard

os.chdir(r'C:\Program Files (x86)\WinSCP')
keyboard.write('w',delay=0)
os.system('WinSCP.com /ini=nul /script=example.txt')

 

 

 

keyboard 모듈을 사용하여 명령어가 실행될 때, 'w' 키를 입력하게 하여 명령어가 계속 진행되도록

해서 해결하였다.

 

기능 구현을 위해 FTP를 사용하였지만, SFTP를 사용하는게 좋을 듯 하고, 옵션을 좀 더 연구하면 좀 더

괜찬아 질 듯 하다.