1
mySCP="scp -q -o StrictHostKeyChecking=no -o BatchMode=yes -o UserKnownHostsFile=/dev/null -o HostbasedAuthentication=no"

rm -Rf /tmp/logdata
mkdir /tmp/logdata

$mySCP -r xyz2384:/d/d1/run_logs/results/trail/log.txt /tmp/logdata/
myResult=$?

if (( $myResult == 0 )); then
    echo "SUCCESS – Log data copying, at $(date +'%m/%d/%Y %H:%M:%S')."
else
    echo "**FAILED – Log data copying, at $(date +'%m/%d/%Y %H:%M:%S')."
    echo "$myResult"
    exit
fi

Когда я выполняю это как часть скрипта, иногда я получаю ошибку « lost connection », и выполнение скрипта прекращается, но иногда это работает.

Есть ли какой-нибудь способ проверить доступность соединения и повторить попытку, пока все не выполнится успешно?

1 ответ1

1

Предполагая, что остальная часть вашего кода работает:

mySCP="scp -q -o StrictHostKeyChecking=no -o BatchMode=yes -o UserKnownHostsFile=/dev/null -o HostbasedAuthentication=no"

rm -Rf /tmp/logdata
mkdir /tmp/logdata

myCmd="$mySCP -r xyz2384:/d/d1/run_logs/results/trail/log.txt /tmp/logdata/"

while true; do
    $myCmd
    myResult=$?
    date=$(date +'%m/%d/%Y %H:%M:%S')
    if [ $myResult -eq 0 ]; then
        echo "SUCCESS – Log data copying, at $date."
        break
    else
        echo "**FAILED – Log data copying, at $date."
        echo "mySCP return code: $myResult"
        echo "Retrying..."
        # You can probably increase this delay
        sleep 10
    fi
done

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .