명령은 하나이지만 호스트는 여러 개인 스크립트에서 시간 초과 사용

명령은 하나이지만 호스트는 여러 개인 스크립트에서 시간 초과 사용

저는 장치에 SSH를 연결하고 SCP를 통해 파일을 전송하고 장치 이름에 따라 이름을 지정한 후 다음 파일로 이동하는 스크립트를 작성 중입니다. 내 문제는 장치에 액세스할 수 없으면 스크립트가 영원히 중단된다는 것입니다. 이것은 내 코드입니다.

#!/bin/bash
echo "Starting Backup of Ubiquiti Radios"
#cut -d' ' -f2 /usr/tmp/Script/Links.csv
#cut -d' ' -f1 /usr/tmp/Script/Links.csv
while read one two; do 
    if sshpass -p 'supersecretpassword' scp -o StrictHostKeyChecking=no control@"$two":/tmp/system.cfg /mnt/hgfs/Ubiquiti/$one.cfg; then
        echo $one Success!
    else
        echo $one Failed
    fi
done < /usr/tmp/Script/Links.csv

그대로 작동하지만 사용 중인 시간 초과로 인해 다음 장치로 이동하는 대신 전체 스크립트가 취소됩니다. 어떤 아이디어라도 크게 감사하겠습니다.

답변1

timeout다음과 같은 명령을 시도해 보세요 .

#!/bin/bash
echo "Starting Backup of Ubiquiti Radios"
while read one two; do 
  if timeout 60 sshpass -p 'supersecretpassword' scp -o StrictHostKeyChecking=no control@"$two":/tmp/system.cfg /mnt/hgfs/Ubiquiti/$one.cfg; then
    echo "$one Success!"
  else
    echo "$one Failed"
  fi
done < /usr/tmp/Script/Links.csv

답변2

다들 감사 해요. 나는 스크립트에 매우 만족합니다. 예상한 대로 정확하게 수행되었습니다.

#!/bin/bash
echo "Starting Backup of Ubiquiti Radios"
mkdir "/mnt/hgfs/Ubiquiti/$(date +%Y%m%d)"
while read one two; do
 if timeout 10 sshpass -p 'pass' scp -o StrictHostKeyChecking=no control@"$two":/tmp/system.cfg "/mnt/hgfs/Ubiquiti/$(date +%Y%m%d)/$one.cfg"; then
   echo "$one Success!"
 else
   echo "$one Failed"
 fi
done < /home/osboxes/Documents/Script/Links.csv

관련 정보