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/$$-*