SCP 파일 대량 스 크 립 트
내 Hadoop 클 러 스 터 에 서 는 모든 사용자 이름과 비밀번호 가 일치 합 니 다. 키 보드 를 두 드 렸 을 때 오류 가 발생 할 가능성 을 줄 이거 나 게 으 름 을 끝까지 진행 하기 위해 서 는 사용자 이름 을 한 번 만 입력 하면 됩 니 다.클 러 스 터 의 디 렉 터 리 등급 도 일치 하고 목표 경로 도 일치 하 며 디 렉 터 리 복사 도 지원 하 며 나머지 scp 의 고급 특성 은 실현 되 지 않 습 니 다.
그럼 이 스 크 립 트 문법 에 대해 간단 한 소 개 를 하 겠 습 니 다.문법 이 비교적 간단 하 다. 주로 상술 한 게 으 름 피 우 는 원칙 에 따라 구체 적 으로 다음 과 같다.
문법 1, 같은 사용자 이름, 대상 이름 으로 파일 복사: bscp - ut [r] sourceDir user targetDir host 1 host 2...
문법 2, 같은 사용자 이름, 다른 대상 이름 으로 파일 복사: bscp - u [r] sourceDir user host1: targetDir 1 host2: target 2...
문법 3, 서로 다른 사용자 이름, 같은 대상 이름 복사 파일: bscp - t [r] sourceDir targetDiruser1@host1 user2@host2…"
문법 4, 사용자 이름, 대상 이름 이 다 릅 니 다: bscp [- r] sourceDiruser1@host1:targetDir1 user2@host2:targetDir2…
모두 가 문법 형식 을 쉽게 이해 할 수 있 을 것 이 라 고 믿 고 더 이상 군말 하지 않 겠 습 니 다. 다음은 코드 를 직접 보 여 드 리 겠 습 니 다.
#!/bin/sh
print_usage()
{
echo " , 、 : bscp -ut[r] sourceDir user targetDir host1 host2…"
echo " , 、 : bscp -u[r] sourceDir user host1:targetDir1 host2:target2…"
echo " , 、 : bscp -t[r] sourceDir targetDir user1@host1 user2@host2…"
echo " , 、 : bscp [-r] sourceDir user1@host1:targetDir1 user2@host2:targetDir2…"
}
argNumber=$#
#
if [ $argNumber -le 1 ]; then
print_usage
exit 1
fi
COMMAND=$1
#shift
case $COMMAND in
(--help|-help|-h|help)
print_usage
exit 0
;;
esac
if [ "${COMMAND:0:1}" != "-" ];then
shift
args="$@"
for i in $args
do
scp $COMMAND $i
done
else
length=${#COMMAND}
#echo $length
if [ $length -eq 4 ]; then
shift
if [ $# -le 3 ];then
print_usage
exit 1
fi
source=$1
targetUser=$2
targetDir=$3
shift 3
args="$@"
for i in $args
do
scp -r $source $targetUser@$i:$targetDir
#echo $targetUser
done
elif [ $length -eq 3 ]; then
shift
source=$1
if [ `expr index "$COMMAND" r` -eq 0 ]; then
if [ $# -le 3 ]; then
print_usage
exit 1
fi
targetUser=$2
targetDir=$3
shift 3
args="$@"
for i in $args
do
scp $source $targetUser@$i:$targetDir
done
else
if [ `expr index "$COMMAND" u` -gt 0 ]; then
if [ $# -le 2 ]; then
print_usage
exit 1
fi
targetUser=$2
shift 2
args="$@"
for i in $args
do
scp -r $source $targetUser@$i
done
elif [ `expr index "$COMMAND" t` -gt 0 ]; then
if [ $# -le 2 ]; then
print_usage
exit 1
fi
targetDir=$2
shift 2
args="$@"
for i in $args
do
scp -r $source $i:$targetDir
done
else
print_usage
exit 1
fi
fi
elif [ $length -eq 2 ]; then
shift
source=$1
if [ `expr index "$COMMAND" u` -gt 0 ]; then
if [ $# -le 2 ]; then
print_usage
exit 1
fi
targetUser=$2
shift 2
args="$@"
for i in $args
do
scp $source $targetUser@$i
done
elif [ `expr index "$COMMAND" t` -gt 0 ]; then
if [ $# -le 2 ]; then
print_usage
exit 1
fi
targetDir=$2
shift 2
args="$@"
for i in $args
do
scp $source $i:$targetDir
done
elif [ `expr index "$COMMAND" r` -gt 0 ]; then
if [ $# -le 1 ]; then
print_usage
exit 1
fi
shift 1
args="$@"
for i in $args
do
scp -r $source $i
done
else
print_usage
exit 1
fi
else
print_usage
exit 1
fi
fi
클 러 스 터 에서 각각 상황 을 테스트 해 보 았 지만 결과 에 대해 서 는 상당히 만 족 스 러 웠 다. 물론 지나 가 는 큰 신 이 가르쳐 주 셔 서 이 작은 각본 을 더욱 완벽 하 게 만 들 었 으 면 좋 겠 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
용감한 바로 가기 및 우분투 응용 프로그램안녕하세요 여러분, 이 기사에서는 모든 사이트에서 pwa를 생성하고 실행기 응용 프로그램으로 추가하는 방법을 설명하고 싶습니다. 일부 웹사이트는 PWA로 설치를 허용하지 않지만 유사한 애플리케이션을 원합니다. 1. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.