私は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