'ftp'에 해당되는 글 1건

  1. 2008.10.22 도스배치명령으로 FTP 사용하기 2
2008. 10. 22. 09:29 IT

 

최근에 FTP를 이용하여 업무상 데이터를 공유하는 작업을 수행하고 있었습니다.

매일 할일을 FTP에 올려놓으면 상대방이 다음날 등록된 파일을 확인해서 작업하고

다시 결과를 특정 FTP 경로에 올려놓는 것이었습다.

(물론 형상관리툴을 사용하지 않은 관계로 백업이나 버전관리에 다소 어려움이 있었습니다.)

 

하여튼, 상대방과 그날 그날의 일거리를 체크하는데,

일일이 눈으로 확인하는 것 보다는 자동화 하는게 어떻냐고

단순하게 이야기 했다가

스크립트까지 짜게 되었습니다.

 

제일 핵심은 FTP 접근을 자동화하는 것,

그리고 결과를 어떻게 받아올것인가 였습니다.

 

이전에도 도스 스크립트를 작성해본 경험이 있었기때문에,

이곳저곳 간단하게 참조하여 짜집기 하여 구현했는데,

 

FTP호출을 자동화 하는 방법은 윈도우의 FTP 커맨드에서 제공하는 -s 옵션을 활용했습니다.

물론 해당 스크립트 파일은 환경변수를 사용할수 없는 정적 파일 형태만을 지원합니다.

따라서 동적으로 파일을 만드는 과정도 추가했습니다.

 

아래에 간단한 스크립트 조각에 대한 설명을 기록합니다.

 

1. 작업에 필요한 정보를 정의

  1. set FTP_CMD=c:\work\i_love_it.txt 
  2. set FTP_IP=192.168.0.9
  3. set FTP_ID=ftpuser
  4. set FTP_PWD=yourpwd

첫번째 FTP_CMD는 FTP호출에 사용할 스크립트 파일명을 정의했습다.

나머지는 ftp 접속 ip, id, password를 의미합니다.

 

2. 오늘 날짜를 얻기

  1. FOR /F "TOKENS=2" %%i IN ('date /t') DO SET FullDate=%%i
  2. SET Month=%date:~5,2%
  3. SET Day=%date:~8,2%
  4. SET Year=%date:~0,4%
  5. set TODAY=%Year%%Month%%Day%

좀더 쉬운 방법도 있겠지만 여기서는 yyyymmdd 형태의 값을 만들기위해 웹에서 돌아다니는 코드를 이용했습니다.

 

3. 로그파일명 정의

  1. set LOG_FILE=c:\work\todo-list-%TODAY%.log

FTP 결과를 로그에 저장하기 위해 정의합니다.

 

4. 스크립트 파일 만들기 

  1. echo open %FTP_IP%>> %FTP_CMD%
  2. echo user %FTP_ID%>> %FTP_CMD%
  3. echo %FTP_PWD%>> %FTP_CMD%
  4. echo cd "pubs/working">> %FTP_CMD%
  5. echo dir %TODAY% %LOG_FILE%>> %FTP_CMD%
  6. echo bye>> %FTP_CMD%

FTP용 스크립트 명령을 파일에 저장하는 작업입니다.

먼저 FTP서버에 접속하여 로그인하고 pubs/working 위치로 간다음

%TODAY% 경로 (ex. 20091022) 를 리스팅 하여 %LOG_FILE%에 저장하고 있습니다. 

 

5. ftp 스크립트 실행하기 

  1. ftp -n -v -s:%FTP_CMD%

ftp를 스크립트로 실행합니다.

 

6. 결과처리

  1. findstr /I /C:"doc" %LOG_FILE%> null
  2. if not errorlevel 1 goto exist_job
  3. echo ### Congratulations, We can play now! :D ###
  4. goto end
  5. :exist_job
  6. echo ### sorry, we have work. T.T ###
  7. notepad %LOG_FILE%
  8. :end

로그파일 내에 문서(doc)파일 목록이 있으면 notepad로 목록을 보여주고,

없으면 콘솔메세지만 뿌리고 종료처리 합니다.

 

물론.. FTP 실행시 아예 있으면 파일을 가져오는 것도 좋은 방법입니다.

마지막으로 윈도우 스케줄러에 걸어놓으면 끝.

 

좀더 효과적으로 피드백을 받으려면,

RSS나 메일링, 메신저 전송기능을 뒤에 붙이는 것도 재미있겠네요.  좀더 재미를 추구하신다면  Ambient Orb 류도 OK. :)

 

이 글은 스프링노트에서 작성되었습니다.

posted by smplnote