rendered paste body#!/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