У меня есть три удаленных компьютера (machineA, machineB, machineC), с которых я могу копировать файлы. Если по какой-либо причине я не могу скопировать с машины A, то я должен скопировать с машины B, а если по какой-либо причине я не могу скопировать с машины B, тогда начните копирование с машины C.
Ниже приведена единственная команда оболочки, которую я имею, и мне нужно запустить ее на многих машинах, но тогда это означает, что на всех этих машинах она будет копироваться только с машины A.
(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