diff --git a/registry/scripts/upgrade_all.sh b/registry/scripts/upgrade_all.sh index 13fe9cb33ef92aa66723c148d8881df845e6c0fd..3e81ee1824733be4b7b71ea4fcb67686c1eca87c 100755 --- a/registry/scripts/upgrade_all.sh +++ b/registry/scripts/upgrade_all.sh @@ -18,9 +18,9 @@ mainlog="/var/log/`basename $0`_`date +%Y%m%d-%H%M`" -getip(){ +getips(){ awk '/^lease/{IP=$2} /hardware ethernet/{gsub(";","",$3);if($3 == "'$1'"){print IP}}' \ - < /var/lib/dhcp/dhcpd.leases | tail -n 1 + < /var/lib/dhcp/dhcpd.leases | sort -u } runcmd(){ @@ -59,7 +59,7 @@ done < $conf_file log "Wakeonlan sent, waiting" while [ $wait_time -gt 0 ] do - log -ne "Waiting for boot, remaining $wait_time seconds\r" | tee $mainlog + log -ne "Waiting for boot, remaining $wait_time seconds\r" sleep $wait_step wait_time=$(($wait_time - $wait_step)) done @@ -67,12 +67,17 @@ log -e "\nWaiting finished" for mac in $MACS do - ip=$(getip $mac) - runcmd $ip $cmd & - PIDS="$PIDS $!" + for ip in $(getips $mac) + do + runcmd $ip $cmd & + PIDS="$PIDS $!" + done done # wait all pids -wait $PIDS +for pid in $PIDS +do + wait $pid +done # Retrieving logs for f in /tmp/$$-*