我正在自动化将目录从主机服务器移动到目标服务器的过程。尽管这是一个简单的scp
过程,但我陷入了想要参数化其中 2 个参数的困境。
我不希望用户输入源和目标服务器详细信息(IP 或服务器名称)。而是希望用户仅输入服务器的缩写。
例如,我有 20 个服务器,分别是 A1 到 A8、B1 到 B5、C1 到 C7 我希望 bash 脚本的输入有 3 个参数,即 source_server target_server directory_name
例如:
script_name A7 C2 directory_name
在 bash 脚本中我想要类似的东西:
if $1 = A1 then source = server_IP
else
if $1 = A2 then source = server_IP
... 等等
同样,2 美元(目标)。
然后使用 SCP 命令中的 source 值。
答案1
使用关联数组:
declare -A servers
servers=([a1]=serverA1 [a2]=serverA2 [c1]=serverC1)
src="${servers[$1]}"
dst="${servers[$2]}"
在这里,关联数组servers
包含您的服务器主列表。由于$1
是源服务器的短名称,因此您可以使用 访问源服务器的长名称${servers[$1]}
。