adsense_in_article_test


[bash: <<. >] FTP 자동접속 및 전송 결과 확인 리눅스 bash script

일단, 리눅스 shell script에서 ftp 서버에 자동으로 접속하는 법은 예전에 이미 써 두었다. 이전 게시물을 참고하면 된다. 여기로

추가적으로, 자동접속해서 파일을 올리거나 가져오는 과정이 정상적으로 잘 종료되었는지를 확인하는 과정이 필요할 수 있다. 전송 도중에 네트워크 문제로 연결이 끊어졌는지 판단할 수 있는 간단한 방법은 FTP 접속 과정을 별도의 로그 파일로 남기고 이 내용을 확인하면 된다.

우선 ftp 자동접속을 하고 접속 이후 수행되는 내용을 ftp_log.txt 파일로 저장한다. 아래의 예시를 보자.

# 192.168.0.10 서버에 접속, 이후 과정은 ftp_log.txt에 저장
ftp -n -p 192.168.0.10 << SCRIPT > ftp_log.txt
  user john my_password
  binary
  put my_data.dat
  quit
SCRIPT

ftp에서 -p 옵션은 패시브 모드(passive mode)로 접속하기 위한 것이다. 액티브 모드(active mode)로 접속하려면 생략한다.

전송이 성공적으로 이루어졌다면, ftp_log.txt 파일에 대략 아래와 같은 내용이 포함되어야 정상이다.

...
ftp> put my_data.dat
local: my_data.dat remote: my_data.dat
200 PORT command successful.
150 Ok to send data
226 Transfer complete.
...

성공적으로 전송되었다면 "226 Transfer complete" 메세지가 있어야 한다. 메세지 내용은 서버에 따라 약간 차이가 있을 수 있으니 해당 ftp 서버에 접속해서 전송시험을 한번 해 보고 메세지 순서와 내용을 미리 확인해 보자.

이제 ftp_log.txt 파일의 내용에서 성공 확인 메세지 존재 여부를 확인하면 된다. 아래의 예시를 보자.

# ftp_log.txt 파일에서 전송 성공 메세지 확인
ftp_check=`cat ftp_log.txt | grep "^226 Transfer complete\." | wc -l`
if [[ $ftp_check -eq 1 ]]
then echo "my_data.dat 파일 전송 성공"
else echo "my_data.dat 파일 전송 실패"
fi


mput 명령으로 한꺼번에 여러개의 파일을 보낼 경우에는 "226 Transfer complete" 메세지의 수와 보낸 파일의 수가 같은지 점검하면 될 듯. 아래의 예시를 보자. ~/my_data 디렉토리 안에 있는 .dat 파일을 모두 전송하는 경우이다.

# 디렉토리 이동
cd ~/my_data
# ~/my_data 디렉토리에 .dat 파일이 몇개인지 파악하여 files_num 변수에 저장
files_num=`ls *.dat | wc -l`
# ftp 전송, ftp_log.txt 파일 생성
ftp -n -p 192.168.0.10 << SCRIPT > ftp_log.txt
  user john my_password
  binary
  prompt
  mput *.dat
  quit
SCRIPT

# ftp_log.txt 파일 확인
ftp_check=`cat ftp_log.txt | grep "^226 Transfer complete\." | wc -l`
if [[ $ftp_check -eq $files_num ]]
then echo ".dat 파일 전송 성공. (개수: $files_num)"
else echo ".dat 파일 전송 실패. 자세한 내용은 ftp_log.txt 파일을 참조하세요."
fi




덧글

  • 산골청년 2020/02/24 17:11 # 삭제 답글

    ㅠㅠㅠㅠ 안되요 한번만 전송하고 나서 또 하려면 보내질 않아요 ㅠㅠ
  • 산골청년 2020/02/24 17:13 # 삭제 답글

    ftp -n -p 192.168.0.10 << SCRIPT > autoftp.txt
    user john my_password
    binary
    put my_data.dat
    quit
    SCRIPT
    이렇게 해서 Autoftp.txt가 생기면서 한번 전송을 하고 cat autoftp.txt로 보내려고 하면 안되용
  • 반달가면 2020/02/25 13:41 #

    제시하신 코드에서 autoftp.txt는 자동전송 스크립트가 아니라 전송결과를 확인하기 위한 로그 파일입니다. 자동전송을 반복 사용하려면 본문의 예시를 참고하여 스크립트를 만들어야겠죠.
  • 산골청년 2020/02/24 22:02 # 삭제 답글

    맥에서 사용하려면 다른 구문을 써야 하나요?
댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.


B-Side


adsense(w160_h600)2

통계 위젯 (화이트)

656767
4519
2078633

2019 대표이글루_IT

Google Analytics