Browse Source

Fix measurement script bug when a target is locally unreachable (thanks xuu)

Baptiste Jonglez 10 years ago
parent
commit
962bc9a40d
1 changed files with 16 additions and 10 deletions
  1. 16 10
      templates/run.sh

+ 16 - 10
templates/run.sh

@@ -35,19 +35,25 @@ do
     # Make sure "id" is an integer
     printf "%d" "$id" > /dev/null 2>&1 || continue
     # Parsing ping output, for Linux
-    output="$($PING -c "$NB_PINGS" -- "$ip" | grep -A1 "packets transmitted")"
-    echo $output | sed -e 's#^\([0-9]*\) packets transmitted, \([0-9]*\) received.*#\1\t\2#' > /tmp/"$FAMILY"_tmp1
-    read sent received < /tmp/"$FAMILY"_tmp1
-    if [ "$received" -eq 0 ]
-    then
+    if ! output="$($PING -c "$NB_PINGS" -- "$ip" | grep -A1 "packets transmitted")"; then
+        sent=0
+        received=0
         args="avgrtt=NaN"
         echo "Target $id ($ip) is unreachable"
     else
-        echo $output | sed -e 's#.*rtt min/avg/max/mdev = \(.*\)/\(.*\)/\(.*\)/\(.*\) ms$#\1\t\2\t\3\t\4#' > /tmp/"$FAMILY"_tmp2
-        read minrtt avgrtt maxrtt jitter < /tmp/"$FAMILY"_tmp2
-        [ -z "$avgrtt" ] && continue
-        echo "RTT to target $id ($ip) is $avgrtt"
-        args="minrtt=${minrtt}&avgrtt=${avgrtt}&maxrtt=${maxrtt}&jitter=${jitter}"
+        echo $output | sed -e 's#^\([0-9]*\) packets transmitted, \([0-9]*\) received.*#\1\t\2#' > /tmp/"$FAMILY"_tmp1
+        read sent received < /tmp/"$FAMILY"_tmp1
+        if [ "$received" -eq 0 ]
+        then
+            args="avgrtt=NaN"
+            echo "Target $id ($ip) is unreachable"
+        else
+            echo $output | sed -e 's#.*rtt min/avg/max/mdev = \(.*\)/\(.*\)/\(.*\)/\(.*\) ms$#\1\t\2\t\3\t\4#' > /tmp/"$FAMILY"_tmp2
+            read minrtt avgrtt maxrtt jitter < /tmp/"$FAMILY"_tmp2
+            [ -z "$avgrtt" ] && continue
+            echo "RTT to target $id ($ip) is $avgrtt"
+            args="minrtt=${minrtt}&avgrtt=${avgrtt}&maxrtt=${maxrtt}&jitter=${jitter}"
+        fi
     fi
     curl -s -d "target=${id}&probes_sent=${sent}&probes_received=${received}&${args}" "$PEERFINDER"/result/report/"$UUID"
 done