[셸] 셸 스 크 립 트 로 로 컬 폴 더 를 ftp 의 폴 더 와 동기 화 합 니 다.
9069 단어 셸 스 크 립 트
최근 AIX 에서 개발 을 하고 있 으 며, 개발 기 계 는 오 피 스 네트워크 에 있 으 며, 테스트 기 계 는 랩 네트워크 에 있어 서로 통신 할 수 없 으 며, 특정 ftp 를 통 해 파일 을 전송 할 수 밖 에 없다.
매번 올 리 는 기 계 는 ftp 에 로그 인하 여 내 디 렉 터 리 에 들 어가 업로드 합 니 다.다운로드 한 기 계 는 모두 해 야 합 니 다: ftp 에 로그 인하 여 내 디 렉 터 리 에 들 어가 다운로드 합 니 다.이상 의 동작 은 매일 몇 십 번 씩 해 야 하 니 매우 아프다.
이 셸 스 크 립 트 의 기능 은 바로 이러한 기능 을 완성 하 는 것 입 니 다. ftp 에 로그 인하 여 내 디 렉 터 리 에 들 어가 서 일부 파일 을 업로드/다운로드 하 는 것 입 니 다.매개 변 수 를 입력 하려 면 이 매개 변 수 는 "get"이 라면 ftp 에서 다운로드 합 니 다."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 관련 명령:
for 순환:
for i in 집합;do done
집합 은 명령 의 결 과 를 사용 할 수 있 습 니 다. '명령 을 싸 라. 예 를 들 어' ls $folder 'local`
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
셸 스 크 립 트 (다 중 스 레 드 대량 생 성 사용자)예 를 들 어 백업 데이터 베 이 스 는 100 개의 라 이브 러 리 가 있 고 정상 적 인 백업 효율 이 매우 낮 습 니 다.다 중 스 레 드 가 있 으 면 백업 하 는 데 10 시간 이 걸 릴 수도 있 었 는데 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.