2010. 4. 6.

FTP 접근 사용자 접근 정보를 한곳에서 처리하는 방법(netrc)

FTP 접근 사용자 접근 정보를 한곳에서 처리하는 방법(netrc)


- 보통 리눅스에서는 .netrc파일을 통해 접속하고자하는 원격지의 아이디와 암호를 관리할 수 있습니다. .netrc 파일을 $HOME 디렉토리에 만드시면 되는데, 그 내용을 다음과 같이 구성됩니다.

사용자 계정 홈 디렉토리에 .netrc 만들어 아래 와 같이 작성한다.
- 형식
machine "호스트 정보" login "계정" password "패스워드"
ex)
vi /home/test/.netrc

machine 192.168.1.5 login test password 123456


[test@localhost ~]$ cat .netrc
machine domainname login user_id password user_pass




계정정보가 들어간 FTP 쉘 스크립트
============================================================================================================
#!/bin/sh
USERNAME="test"
PASSWORD="123456"
HOST="192.168.1.5"
PENSION_DATA_DIR="/data/source/"
GET_FILE="*.*"
#
echo `date +%Y'-'%m'-'%d`
mkdir $PENSION_DATA_DIR/`date +"%Y%m%d" --date '1 days ago'`
cd $PENSION_DATA_DIR
mv $PENSION_DATA_DIR/$GET_FILE $PENSION_DATA_DIR/`date +"%Y%m%d" --date '1 days ago'`

{ echo $USERNAME $PASSWORD
echo cd /batch/smd
echo bin
echo prompt
echo mget $GET_FILE
echo bye
} | ftp -n -v $HOST >> /home/test/batchftp.log
#
ls -al $PENSION_DATA_DIR
============================================================================================================


netrc를 사용한 FTP 쉘 스크립트
============================================================================================================
#!/bin/sh
HOST="192.168.1.5"
PENSION_DATA_DIR="/data/source"
GET_FILE="*.*"
#
echo `date +%Y'-'%m'-'%d`
mkdir $PENSION_DATA_DIR/`date +"%Y%m%d" --date '1 days ago'`
cd $PENSION_DATA_DIR
mv $PENSION_DATA_DIR/$GET_FILE $PENSION_DATA_DIR/`date +"%Y%m%d" --date '1 days ago'`

{
echo cd /batch/smd
echo bin
echo prompt
echo mget $GET_FILE
echo bye
} | ftp -v $HOST >> /home/test/batchftp.log
#
ls -al $PENSION_DATA_DIR
============================================================================================================


기타 TIP

.netrc 제대로 만들었는데도 ftp 접속이 자동으로 안될 경우에는 권한을 600 으로 주었는지 확인한다.
















.netrc

.my.cnf

.login



위의 파일들은 사용자 홈계정에 위치하는 조금은 생소한 환경설정 파일이다. (솔라리스8 리눅스는 확인 못했음)

각각의 역할은 다음과 같다.



.netrc - 자동으로 ftp 에 로그인하게 하는 역할을 한다.



machine 서버이름 login 계정 password 패스워드



.my.cnf - 자동으로 원격지 mysql에 접속하는 역할을 한다.



[client]

user=계정

password=패스워드

[mysqld]

language=korean



.login - 잘은 모르겠는데 사용자 환경에 있어 .cshrc 보다 먼저 읽히는거 같다. 아래의 내용이 들어가있다.

stty erase "^H"
stty kill "^U"
stty intr "^C"
stty eof "^D"
stty susp "^Z"
stty stop "^-"



쉘프로그램 돌릴때 stty 어쩌구 에러가 나면 위의 내용이 중복 처리된 부분이다. 이럴때 뒤져보면

.cshrc 와 .login 안에 중복 처리되있는 경우가 있다.

댓글 없음: