Скрипт на Bash:ошибка в логике
Добрый день!
Задача: скрипт создает на удаленных машинах бэкап,присваивает ему имя в виде ip+нынешняя дата,и копирует его.
Имеется список с ip,где есть как доступные,так и недоступные ip. При отрабатывании цикла,скрипт доходит до первого доступного ip,проделывает с ним нужные действия (архивирование нужных файлов и копирование с удаленного сервера),и дальше по списку ip скрипт не отрабатывает. Код прикладываю:
#!/bin/bash
rm -f /pingFailed.log
passwd=$(head -1 passwd)
while read ip
do
mkdir -p /zzz/$ip/
ping -c 1 $ip &>>/dev/null
if [ "$?" = "0" ];then
#echo "Good $ip" >> /pingFailed.log
sshpass -p $passwd ssh root@$ip 'DATE=$(date +%d-%m-%y); ADDR=$(ip addr | grep -oP "([\d]{1,3}[\.]){3}102"); tar -vcf /tmp/"$ADDR"_"$DATE".tar /media/'
sshpass -p $passwd scp root@$ip:/tmp/*.tar /zzz/$ip/
sshpass -p $passwd ssh root@$ip 'rm -f /tmp/*.tar'
else
echo "Недоступен $ip" >> /pingFailed.log
fi
done < iplist
Подскажите, что я делаю не так?