UNIX SHELL PROGRAMING FTP

2013. 2. 28. 11:3599. 정리전 - IT/13. Unix 얇팍지식

UNIX FTP 이용방법

절차1. 접속시도

 

$> ftp xxx.xxx.xxx.xxx

ftp> id

ftp> password

 

절차2. 접속된 서버의 디렉토리 위치(현재) 확인 : remote서버의 경로확인

 

ftp> pwd

 

절차3. 접속을 시도한 로컬 위치(현재) 확인 : !pwd

 

ftp> !pwd           <=== unix shell의 pwd실행.

ftp> !                 <=== 잠시 unix shell로 나들이.

 

절차4. 접속된 원격의 서버에서 경로이동 : cd cdup or cd .. or cd ~/src등.

 

ftp> cd src         <=== remote서버의 현재 위치에서 하위의 src폴더로 이동.

 

로컬서버에서의 경로이동

 

ftp> lcd src        <=== local서버의 현재 위치에서 하위의 src폴더로 이동 또는

 

ftp> !

$> cd src

$> exit

ftp>

 

절차5. 파일 확인 및 전송준비

 

ftp> pwd           <=== 현위치확인

ftp> ls               <=== 목록확인

ftp> bin             <=== 전송모드 binary전환

ftp> hash           <=== 파일전송 도중에 "#"표시를 하여 전송중임을 나타낸다.

ftp> get filename  <=== 파일을 remote에서 local로 download

ftp> put filename  <=== 파일을 local에서 remote로 upload

 

절차6. ftp 종료 : bye

 

ftp> bye

$>

 

 

ascii : 전송모드를 ASCII모드로 설정한다. (ascii or as)

binary : 전송모드를 BINARY모드로 설정한다. (binary or bin)

bell : 명령어 완료시 벨소리를 나게 한다.

bye : ftp접속을 종료하고 빠져나간다.

cd : remote system의 디렉토리를 변경한다.

cdup : remote system의 한단계 상위디렉토리로 이동한다.

chmod : remote system의 파일 퍼미션을 변경한다. (chmod 755 index.html)

close : ftp 접속을 종료한다.

delete : remote system의 파일을 삭제한다. (delete index.old)

dir : remote system의 디렉토리 내용을 디스플레이한다.

disconnect : ftp 접속을 종료한다.

exit : ftp 접속을 종료한다.

get : 지정된 파일을 가져온다. (get index.html)

hash : 파일전송도중에 "#"표시를 하여 전송중임을 나타낸다.

help : ftp 명령어 도움말을 볼 수 있다.

lcd : local system의 디렉토리를 변경한다.

ls : remote system의 디렉토리 내용을 디스플레이한다.

mdelete : 여러개의 파일을 한꺼번에 지울 때 사용한다. (mdelete *.old)

mget : 여러개의 파일을 한꺼번에 가져올때 사용한다. (mget *.gz)

mput : 여러개의 파일을 한꺼번에 remote system에 올린다. (mput *.html)

open : ftp 접속을 시도한다.

prompt : 파일전송시에 확인과정을 거친다. on/off 토글

put : 하나의 파일을 remote system에 올린다. (put index.html)

pwd : remote system의 현재 작업디렉토리를 표시한다.

quit : ftp 접속을 종료한다.

rstatus : remote system의 상황(version, id 등)을 표시한다.

rename : remote system의 파일명을 바꾼다.

rmdir : remote system의 디렉토리를 삭제한다.

size : remote system에 있는 파일 크기를 byte단위로 표시한다.

status : 현재 연결된 ftp 세션 모드에 대한 설정을 보여준다.

type : 전송모드를 설정한다. (type or type ascii or type binary)

 

 

 

 

SHELL 에서 사용하는 FTP 접속 프로그램 예제

 

#!/bin/sh

 

TEMPDIR=$HOME/tmp                                                  # 임시저장 디렉토리 지정

TEMPFILE1=$TEMPDIR/file1.log                                    # 임시파일 1 파일명 지정

TEMPFILE2=$TEMPDIR/file2.log                                    # 임시파일 2 파일명 지정

TARGETDIR=/data                                                        # 타겟디렉토리 지정

TODAY=`date +%Y%m%d`                                            # 날짜구하는 명령

SERVERNAME=서버명                                                   # 서버명 지정

USERNAME=사용자이름                                                # 사용자이름 지정

PASSWORD=패스워드                                                  # 패스워드 지정

 

# 임시파일이 있으면 지우기

if [ -f $TEMPFILE1 ]; then

        rm -f $TEMPFILE1 $TEMPFILE2

fi

 

# 임시디렉토리가 있으면 지우기

if [ -d $TEMPDIR ]; then

        rm -rf $TEMPDIR

fi

 

# 파일 리스트 가져오는 함수

getlist() {

        ftp -n $SERVERNAME << EOF

        user $USERNAME $PASSWORD

        cd $TARGETDIR

        ls SWIN02_MSP_SUBS_ID0002_T$TODAY*.FIN

        bye

EOF                                                           # 이부분은 반드시 첫째줄에서 시작

}

 

mkdir -p $TEMPDIR                                   # 임시디렉토리 생성

getlist > $TEMPFILE1                                  # 파일리스트 가져와 임시파일1 저장

 

# FIN file이 있는지 확인 결과를 임시파일2에 저장

grep SWIN02_MSP_SUBS_ID0002_T$TODAY $TEMPFILE1 > $TEMPFILE2

 

# FIN file이 있다면 임시파일2에 내용이 들어갈 것이므로 size는 0보다 클것(-s)

if [ -s $TEMPFILE2 ]; then

        ftp -n $SERVERNAME << EOF

        user $USERNAME $PASSWORD

        cd $TARGETDIR

        bin

        prompt

        mget SWIN02_MSP_SUBS_ID0002_T$TODAY*.DAT

        bye

EOF

fi

 

#######################################