[셸] 셸 스 크 립 트 로 로 컬 폴 더 를 ftp 의 폴 더 와 동기 화 합 니 다.

9069 단어 셸 스 크 립 트
수요 설명
최근 AIX 에서 개발 을 하고 있 으 며, 개발 기 계 는 오 피 스 네트워크 에 있 으 며, 테스트 기 계 는 랩 네트워크 에 있어 서로 통신 할 수 없 으 며, 특정 ftp 를 통 해 파일 을 전송 할 수 밖 에 없다.
매번 올 리 는 기 계 는 ftp 에 로그 인하 여 내 디 렉 터 리 에 들 어가 업로드 합 니 다.다운로드 한 기 계 는 모두 해 야 합 니 다: ftp 에 로그 인하 여 내 디 렉 터 리 에 들 어가 다운로드 합 니 다.이상 의 동작 은 매일 몇 십 번 씩 해 야 하 니 매우 아프다.
이 셸 스 크 립 트 의 기능 은 바로 이러한 기능 을 완성 하 는 것 입 니 다. ftp 에 로그 인하 여 내 디 렉 터 리 에 들 어가 서 일부 파일 을 업로드/다운로드 하 는 것 입 니 다.매개 변 수 를 입력 하려 면 이 매개 변 수 는 "get"이 라면 ftp 에서 다운로드 합 니 다."put"라면 ftp 에 올 립 니 다.
셸 스 크 립 트 를 사용 해 본 적 이 없 기 때문에 앞으로 추측 할 수 있 도록 중요 한 점 을 기록 합 니 다.
스 크 립 트 코드
주요 흐름:
  • 매개 변수 가 있 는 지, 매개 변수 가 'get' 이나 'put' 인지 판단 하고 만족 하지 않 으 면 인쇄 오류 가 발생 하고 종료 합 니 다.
  • ftp 에 로그 인하 여 디 렉 터 리 에 들 어 가 는 동작 을 임시 셸 스 크 립 트 에 기록 합 니 다.
  • 인자 가 "get"이면 모든 파일 의 코드 를 다운로드 하여 임시 스 크 립 트 에 기록 합 니 다.인자 가 "put"이면 로 컬 폴 더 의 모든 파일 을 가 져 오고 업로드 코드 를 임시 스 크 립 트 에 추가 합 니 다.
  • ftp 를 끊 은 코드 를 임시 파일 에 기록 합 니 다.
  • 임시 파일 을 실행 하고 삭제 합 니 다.
  •  1 #!/bin/sh
    
     2 
    
     3 if [ $# -ne 1 ] ; then
    
     4 echo "parameter error"
    
     5 exit
    
     6 else
    
     7 if [ $1 != "get" ] && [ $1 != "post" ] ; then
    
     8 echo "parameter error"
    
     9 exit
    
    10 fi
    
    11 fi
    
    12  
    
    13 ftp_host="10.204.16.2"
    
    14 ftp_user="test"
    
    15 ftp_password="testtest"
    
    16 folder_local="/home/smld/sync"
    
    17 folder_remote="/home/smid/frank/sync"
    
    18 temp_shell="sync_temp.sh"
    
    19  
    
    20 cat > $temp_shell << EOF
    
    21 ftp -v -n << !
    
    22 open $ftp_host
    
    23 user $ftp_user $ftp_password
    
    24 lcd $folder_local
    
    25 cd $folder_remote
    
    26 bin
    
    27 prompt off
    
    28 EOF
    
    29  
    
    30 if [ $1 =  "get" ]; then
    
    31 echo "add mget * into $temp_shell"
    
    32 echo "mget *" >> $temp_shell
    
    33 elif [ $1 = "put" ]; then
    
    34 for i in `ls $folder_local`; do
    
    35 echo "add put $i into $temp_shell"
    
    36 echo "put $i" >> $temp_shell
    
    37 done
    
    38 fi
    
    39  
    
    40 cat >> $temp_shell << EOF
    
    41 quit
    
    42 !
    
    43 EOF
    
    44  
    
    45 chmod 777 $temp_shell
    
    46 echo "execute $temp_shell"
    
    47 ./$temp_shell
    
    48 rm $temp_shell

     
    코드 상세 설명
    첫째 줄
    #!/빈/sh, 셸 의 프로그램 경 로 를 지정 합 니 다.
    3 - 11 줄
    if 조건문:
            if [조건];then    elif [조건];then        else        fi
    숫자 가 같은 지 판단 하기: - eq (equal) - ne (not equal), 다른 것 은 작은 것 보다 도 유사 합 니 다.
    문자열 을 판단 할 때 같 습 니 다: = (같 음)! =(같 지 않다)
    조건 이 직접적 이거 나: & (와) | (또는) - a (and) - o (or)
    입력 매개 변 수 는 $1 $2... $9 로 표시 합 니 다. $0 은 스 크 립 트 이름 을 표시 합 니 다. $@ 은 모든 매개 변 수 를 표시 하 는 배열 (9 개 이상 가능), $\# 는 매개 변수 개 수 를 표시 합 니 다.
    13 - 18 줄
    일부 매개 변수, 매개 변수 할당 설정
    20 - 28 줄
    파일 에 내용 을 입력 하 십시오: cat 내용 > 파일 이름, 사용 > 파일 의 원래 내용 을 비 웁 니 다. 사용 >> 파일 뒤에 추 가 됩 니 다.echo 에 도 이런 기능 이 있다.
    여러 줄 의 내용 을 명령 으로 입력 합 니 다. EOF 는 21 줄 처럼 하나의 표지 일 뿐 입 니 다!역할 도 마찬가지다.
            명령 << EOF        내용 세그먼트        EOF
    ftp 관련 명령:
  • 옵션 - v: 자세 한 정보 표시
  • 옵션 - n: 자동 로그 인 을 닫 습 니 다 (오픈 후 알림 이 뜨 지 않 고 사용자 이름 비밀 번 호 를 입력 합 니 다)
  • ftp: open 호스트 이름 연결
  • 로그 인: 사용자 이름 비밀번호
  • 로 컬 디 렉 터 리 지정: lcd 디 렉 터 리
  • 2 진 전송 으로 전환: bin
  • 액 티 브 모드 닫 기 (mget 시 파일 마다 y/n 묻 지 않 음): prompt off
  • 30 - 38 줄
    for 순환:
            for i in 집합;do        done
    집합 은 명령 의 결 과 를 사용 할 수 있 습 니 다. '명령 을 싸 라. 예 를 들 어' ls $folder 'local`

    좋은 웹페이지 즐겨찾기