ホストサーバーからターゲットサーバーにディレクトリを移動するプロセスを自動化しています。これは単純な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]}
。