[Script]Shell프로그램을 이용한 FTP전송
Local서버에서 Remote서버로 다량의 디렉토리와 하위 파일들을 ftp를 이용해서 전송시 쉘프로그램
------------------------------------------------------------------------------------------
ftpFaxPut.sh
------------------------------------------------------------------------------------------
#!/bin/sh
FTP_CMD="/usr/bin/ftp";
FTP_HOST="000.000.000.000";
FTP_USER="user";
FTP_PASS="passwd";
LOCAL_PATH="/data/tmax/tsdms_New/fileupload/fax/prepared";
BACKUP_PATH="/data/tmax/tsdms_New/fileupload/fax/completed";
export FTP_CMD FTP_HOST FTP_USER FTP_PASS LOCAL_PATH
DIRECTORYS=`ls -1 $LOCAL_PATH`
date >> /data/tmax/cronsh/ftp/ftpFaxexcutedate.txt
for temp in $DIRECTORYS
do
if [ ! -f $LOCAL_PATH/$temp ]
then
echo "GET DIRECTORY : $temp";
echo "GET DIRECTORY : $temp" >> /data/tmax/cronsh/ftp/ftpFaxexcutedate.txt
/data/tmax/cronsh/ftp/ftpFaxPutFile.sh $FTP_CMD $FTP_HOST $FTP_USER $FTP_PASS $LOCAL_PATH $temp > /dev/null
fi
done
# File Move after File Transfer
mv $LOCAL_PATH/* $BACKUP_PATH/
exit 0
------------------------------------------------------------------------------------------
ftpFaxPutFile.sh
------------------------------------------------------------------------------------------
#!/bin/sh
$1 -n $2 << EOF
user $3 $4
bi
prompt
mkdir $6
lcd $5/$6
cd $6
mput *
bye
<< EOF
exit 0
참고 : http://blog.naver.com/wpaddle/100094321257
[Script]쉘 스크립트
아주 많은 프로그래머들은 PC 위에서 도는 도스에서 스크립트를 배웠습니다. 기능이 조금 떨어지는 도스 배치 파일 언어로도 꽤 강력한 스크립트나 어플리케이션을 작성할 수도 있지만 그렇게 하려면 아주 해박한 지식을 사용해 해결책을 찾거나 꽁수를 부려야 합니다. 가끔은 오래된 도스용 배치 파일을 유닉스 쉘 스크립트로 변환해서 써야될 경우가 생기지만 이렇게 하는것이 그렇게 어렵지만은 않습니다. 왜냐하면 도스 배치 파일 연산자들이 기능이 동일한 쉘 스크립트 연산자의 서브셋에 불과하기 때문입니다.
표 G-1. 배치 파일 키워드/변수/연산자 와 그에 해당하는 쉘 동의어
배치 파일 연산자 | 쉘 스크립트 동의어 | 뜻 |
---|---|---|
% | $ | 명령어줄 매개변수 접두사 |
/ | - | 명령어 옵션 플래그 |
\ | / | 디렉토리 패스 구분자 |
== | = | (같음) 문자열 비교 테스트 |
!==! | != | (다름) 문자열 비교 테스트 |
| | | | 파이프 |
@ | set +v | 현재 명령어를 에코하지 말 것 |
* | * | 파일명 "와일드 카드" |
> | > | 파일 재지향(덮어 쓰기) |
>> | >> | 파일 재지향(덧붙여 쓰기) |
< | < | 표준입력 재지향 |
%VAR% | $VAR | 환경 변수 |
REM | # | 주석 |
NOT | ! | 뒤에 나오는 테스트 부정 |
NUL | /dev/null | 명령어 출력을 없애기 위한 "블랙홀" |
ECHO | echo | 에코 (Bash 에는 옵션이 많이 있음) |
ECHO. | echo | 빈 줄 에코 |
ECHO OFF | set +v | 다음에 나오는 명령어를 에코하지 말 것 |
FOR %%VAR IN (LIST) DO | for var in [list]; do | "for" 루프 |
:LABEL | 없음 (필요치 않음) | 라벨 |
GOTO | 없음 (대신 함수를 씀) | 스크립트의 다른 곳으로 건너 뜀 |
PAUSE | sleep | 일정 간격을 두고 잠시 대기 |
CHOICE | case 나 select | 메뉴 선택 |
IF | if | if-test |
IF EXIST FILENAME | if [ -e filename ] | 파일이 존재하는지 확인 |
IF !%N==! | if [ -z "$N" ] | 변경가능한 매개변수인 "N"이 없다면 |
CALL | source 나 . (도트 연산자) | 다른 스크립트를 "포함" |
COMMAND /C | source 나 . (도트 연산자) | 다른 스크립트를 "포함"(CALL과 동일) |
SET | export | 환경 변수를 세트 |
SHIFT | shift | 명령어줄 변수 목록을 왼쪽으로 이동(shift) |
SGN | -lt or -gt | (정수) 부호(sign) |
ERRORLEVEL | $? | 종료 상태 |
CON | stdin | "콘솔"(표준입력) |
PRN | /dev/lp0 | (일반적인) 프린터 디바이스 |
LP1 | /dev/lp0 | 첫번째 프린터 디바이스 |
COM1 | /dev/ttyS0 | 첫번째 시리얼 포트 |
배치 파일은 대개 도스 명령어를 갖고 있습니다. 도스용 배치 파일이 쉘 스크립트로 변환되기 위해서는 이 명령어들은 꼭 동일한 유닉스 명령어로 변환되어야 합니다.
표 G-2. 도스 명령어와 동일한 유닉스 명령어
도스 명령어 | 동일한 유닉스 명령어 | 효과 |
---|---|---|
ASSIGN | ln | 파일이나 디렉토리를 링크 |
ATTRIB | chmod | 파일 퍼미션 변경 |
CD | cd | 디렉토리 변경 |
CHDIR | cd | 디렉토리 변경 |
CLS | clear | 스크린 지우기 |
COMP | cmp or diff | 파일 비교 |
COPY | cp | 파일 복사 |
Ctl-C | Ctl-C | 정지(시그널) |
Ctl-Z | Ctl-D | EOF (end-of-file) |
DEL | rm | 파일 삭제 |
DELTREE | rm -rf | 디렉토리의 하위 디렉토리까지 포함해서 삭제 |
DIR | ls -l | 디렉토리 보이기 |
ERASE | rm | 파일 삭제 |
EXIT | exit | 현재 프로세스 종료 |
FC | comm, cmp | 파일 비교 |
FIND | grep | 파일안에서 문자열 찾기 |
MD | mkdir | 디렉토리 생성 |
MKDIR | mkdir | 디렉토리 생성 |
MORE | more | 텍스트 파일 쪽단위(paging) 필터 |
MOVE | mv | 이동 |
PATH | $PATH | 실행파일들의 경로 |
REN | mv | 이름 바꾸기(이동) |
RENAME | mv | 이름 바꾸기(이동) |
RD | rmdir | 디렉토리 삭제 |
RMDIR | rmdir | 디렉토리 삭제 |
SORT | sort | 파일 정렬 |
TIME | date | 시스템 시간 보여주기 |
TYPE | cat | 파일을 표준출력으로 출력 |
XCOPY | cp | (확장) 파일 복사 |
[Script]특정문자 변환 - 일괄처리
#!/bin/sh
src="hack_code..."
src1="<script language=javascript><!-- "
src2=" --></script>"
dst=" "
hack="hack_code.txt"
pattern="*htm*|*.php|*.js"
if [ "$3" = "" ]; then
echo $"{Usage; $0 \"`pwd`\" \"find_string\"}"
else
rm -f $hack
echo "removed $hack"
echo ""
find "$1" -name "*" | egrep "$pattern" | xargs fgrep -l "$2" >> $hack
for i in `cat $hack`;
do
cp -f $i ${i}_bak
replace "$src" "$dst" -- $i
replace "$src1" "$dst" -- $i
replace "$src2" "$dst" -- $i
sed -i '/^$/d' $i #빈줄 삭제
# echo "replaced $i"
done
echo ""
echo "--------------------------------"
echo "created $hack"
echo "completed replacing hack_code!!!"
echo "--------------------------------"
fi
exit;
[출처] http://blog.naver.com/siyang6?Redirect=Log&logNo=30047779296