【发布时间】:2018-04-29 06:13:39
【问题描述】:
我有三台远程机器(machineA、machineB、machineC),我可以从中复制文件。如果由于某种原因我不能从机器A 复制,那么我应该从机器B 复制,如果由于某种原因我不能从机器B 复制,那么就从机器C 开始复制。
下面是我拥有的单个 shell 命令,我需要在许多机器上运行它,但这意味着在所有这些机器上,它只会从 machineA 复制。
(ssh goldy@machineA 'ls -1 /process/snap/20180418/*' | parallel -j5 'scp goldy@machineA:{} /data/files/') || (ssh goldy@machineB 'ls -1 /process/snap/20180418/*' | parallel -j5 'scp goldy@machineB:{} /data/files/') || (ssh goldy@machineC 'ls -1 /process/snap/20180418/*' | parallel -j5 'scp goldy@machineC:{} /data/files/')
现在有什么方法可以让我随机选择第一台机器(从这三台机器中),而不是像往常一样保持machineA。所以随机挑选第一台机器并保留另外两台作为备用,以防第一台机器停机?这可以吗?
更新:
我有这样的事情:
machines=(machineA machineB machineC)
for machine in $(shuf -e ${machines[@]}); do
ssh -o StrictHostKeyChecking=no david@$machine 'ls -1 /process/snap/{{ folder }}/*' | parallel -j{{ threads }} 'scp -o StrictHostKeyChecking=no david@${machine}:{} /data/files/'
[ $? -eq 0 ] && break
done
【问题讨论】:
标签: linux bash shell random scp