미니옵빠의 code stubs

Linux shell에서 FTP 접속 및 추가작업 한 방에 끝내기 본문

OS/Linux

Linux shell에서 FTP 접속 및 추가작업 한 방에 끝내기

미니옵빠 2010. 1. 31. 18:11

Linux Shell 프로그래밍을 할 때, FTP에 접속해서 원하는 작업을 한 번의 명령어 처리로 해야될 때가 있습니다.

예를 들어,
[FTP 접속 후, 특정 계정으로 로그인하고, 파일을 전송한 후, 다시 접속을 끊고] <-- 여기까지 한번의 명령어
그 이후에 다른 shell 작업을 하는 것이죠.

그 때는 아래와 같이 사용하면 됩니다.

$ ftp -v  -n {접속하고자 하는 FTP IP} << EOF       # 이 후에 EOF 문자열이 나올 때까지 계속해서 작업을 진행합니다.
user {ID} {PW}          # FTP 접속 ID와 Password를 입력합니다.
prompt            # interactive prompting 을 Off 시킵니다.
put file.txt       # 파일을 업로드하는군요.
bye                  # FTP를 종료시킵니다.
EOF                # FTP를 이용한 본 작업을 종료합니다.

몇 가지 부연 설명을 하자면,

FTP 옵션 중 [-v] 는 FTP 작업 중 관련된 서버쪽 응답 메시지를 상세히 보여줍니다. 필요없으면 제거해도 되겠죠.
그리고 [-n] 옵션은 auto-login 기능을 제거합니다. 이 옵션이 없으면 한 라인에서 FTP 작업을 할 때 로그인 화면에서 더 이상 접속을 할 수 없게 됩니다. (경우에 따라 다르겠지만요)

그리고 prompt 명령어는 제거하지 않을 경우, 파일 업로드 등의 작업 때 y/n 을 물어보는 옵션이 계속 나타나기 때문에 역시나 한 번의 명령어 처리 때 애로사항이 생기기 됩니다. 그래서 항상 Off 시켜두는 것이 좋습니다.

환경에 따라 passive 모드가 필요할 경우에는 반드시 중간에 passive 명령어를 넣어주셔야 합니다. 안 그러면 먹통이 되는 경우가 가끔 생기더군요.