저는 장치에 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