#!/bin/sh LINK=${1:-klickitat} DIR=/tmp/linkstats INPUT=${DIR}/${LINK} if ! mkdir ${DIR}/lock ; then # echo locked while [ -d ${DIR}/lock ]; do sleep 1 done exit 0; fi # echo lock aquired if [ ! -f ${INPUT} ]; then echo 0 > ${INPUT}-loss echo 0 > ${INPUT}-ping-success echo 0 > ${INPUT}-ping-trials echo 0 > ${INPUT}-latency-min echo 0 > ${INPUT}-latency-ave echo 0 > ${INPUT}-latency-max echo 0 > ${INPUT}-rssi-min echo 0 > ${INPUT}-rssi-ave echo 0 > ${INPUT}-rssi-max exit 0; fi /bin/mv ${INPUT} ${INPUT}-computing /bin/awk -v input=${INPUT} 'BEGIN { min_latency = 5.0 ; max_latency = 0.0; min_rssi = 100 ; max_rssi = 0 } NF == 2 { n_trials++ ; next } NF == 3 { latency = $2 ; rssi = $3 ; sum_latency += latency ; sum_rssi += rssi ; n_trials++ ; n_success++ } latency < min_latency { min_latency = latency } latency > max_latency { max_latency = latency } rssi < min_rssi { min_rssi = rssi } rssi > max_rssi { max_rssi = rssi } #{ print "debug", n_trials, n_success, latency, min_latency, sum_latency, max_latency, rssi, min_rssi, sum_rssi, max_rssi } END { if (n_trials == 0) { print 0 > input "-loss" print 0 > input "-ping-success" print 0 > input "-ping-trials" print 0 > input "-latency-min" print 0 > input "-latency-ave" print 0 > input "-latency-max" print 0 > input "-rssi-min" print 0 > input "-rssi-ave" print 0 > input "-rssi-max" } else { printf("%.3f\n", (n_trials - n_success)/n_trials) > input "-loss" print n_success > input "-ping-success" print n_trials > input "-ping-trials" if (n_success == 0) { print 0 > input "-latency-min" print 0 > input "-latency-ave" print 0 > input "-latency-max" print 0 > input "-rssi-min" print 0 > input "-rssi-ave" print 0 > input "-rssi-max" } else { printf("%.3f\n", min_latency) > input "-latency-min" printf("%.3f\n", sum_latency/n_success) > input "-latency-ave" printf("%.3f\n", max_latency) > input "-latency-max" print min_rssi > input "-rssi-min" printf("%.1f\n", sum_rssi/n_success) > input "-rssi-ave" print max_rssi > input "-rssi-max" } } }' ${INPUT}-computing rm -f ${INPUT}-computing rmdir ${DIR}/lock exit 0