호스트 서버에서 대상 서버로 디렉터리를 이동하는 프로세스를 자동화하고 있습니다. 이는 간단한 scp
프로세스임에도 불구하고 매개변수 중 2개를 매개변수화하고 싶은데 계속해서 고민하고 있습니다.
사용자가 원본 및 대상 서버 세부 정보(IP 또는 서버 이름)를 입력하는 것을 원하지 않습니다. 대신 사용자는 서버의 약어만 입력해야 합니다.
예를 들어, A1~A8, B1~B5, C1~C7 등 20개의 서버가 있습니다. bash 스크립트의 입력에 source_server target_server Directory_name이라는 3개의 매개변수가 있어야 합니다.
예를 들어:
script_name A7 C2 directory_name
Bash 스크립트에서는 다음과 같은 것을 원합니다.
if $1 = A1 then source = server_IP
else
if $1 = A2 then source = server_IP
... 등
다시 $2(목표)입니다.
그런 다음 SCP 명령의 소스 값을 사용하십시오.
답변1
연관 배열을 사용하십시오.
declare -A servers
servers=([a1]=serverA1 [a2]=serverA2 [c1]=serverC1)
src="${servers[$1]}"
dst="${servers[$2]}"
여기서 연관 배열에는 servers
서버의 마스터 목록이 포함되어 있습니다. $1
원본 서버의 짧은 이름이므로 긴 이름을 사용하여 원본 서버에 접근할 수 있습니다 ${servers[$1]}
.