Загрузить файл с любой из двух машин с помощью SCP?

Едва ли ответ, но это не соответствует комментарию из-за форматирования:

Что происходит, когда Вы делаете следующее:

cd /home/user/projects/buildroot
make clean
make distclean

Целевая система копии /proc/config.gz размещать /tmp Затем возьмите существующую конфигурацию ядра, и переводит его в новую версию ядра путем ответа на различный вопрос:

gunzip -c /tmp/config.gz ./.config
make oldconfig     

Сделайте некоторую версию начинающего работу исправности:

make menuconfig

Создайте двоичные файлы

make

Проверьте версию созданного изображения ядра, не загружайте изображение ядра в нано для поиска строки, которая является плохой практикой.

file ./buildroot/output/images/*
1
26.01.2014, 04:50
2 ответа

Вы напрасно усложняете вещи. Просто попробуйте machineA и если это перестало работать, перейдите к machineB:

#!/usr/bin/env bash
set -e

readonly PATH_LOCATION=/testing/directory1
readonly MACHINES=(machineB machineC)
readonly FILE_LOCATION=/data/v1
readonly FILE_NAME=test.tar
readonly TARGET="$FILE_LOCATION/$FILE_NAME"


for MACHINE in ${MACHINES[@]}; do
    scp david@$MACHINE:$TARGET $PATH_LOCATION && break
done

Если Вы хотите знать, с какого хоста Вы загрузили, Вы могли сделать:

for MACHINE in ${MACHINES[@]}; do
    if scp david@$MACHINE:$TARGET $PATH_LOCATION; then
      echo "Downloaded from $MACHINE";
      break;
    fi
done

И если Вы хотите сделать что-то еще, если никакая машина не возросла:

for MACHINE in ${MACHINES[@]}; do
    if scp david@$MACHINE:$TARGET $PATH_LOCATION; then
      echo "Downloaded from $MACHINE";
      break;
    fi
done
if [[ $? -eq 1 ]]; then
   echo "Download failed"
fi
3
27.01.2020, 23:17
  • 1
    Спасибо terdon. Что произойдет, если machineB также перестанет работать, то он выдаст исключение из-за набора-e? –  arsenal 26.01.2014, 22:12
  • 2
    @Webby код возврата будет тем, что было возвращено последним scp предпринятый, таким образом, это будет 1 если оба machones снижаются. См. обновленный ответ для того, как сделать что-то, если это происходит. Также обратите внимание, что это не проверяет, возросла ли машина так, она также возвратит ту же ошибку, если она произошла, но удаленный файл не существует, например. –  terdon♦ 26.01.2014, 22:26
if ping -c 3 -W 1 hostA >/dev/null; then
 SRV=hostA
elif ping -c 3 -W1 hostB >/dev/null; then
 SRV=hostB
else
 echo "cannot contact either hostA or hostB"
 exit 1
fi

scp david@$SRV:$FILE_LOCATION/$FILE_NAME $PATH_LOCATION/. 
RET=$?

echo "Return code is $RET"

...
2
27.01.2020, 23:17

Теги

Похожие вопросы