ping -c 60
として5数要約
iperf -s
iperf -c host -f k -t 60 -i 1
として,5数要約
#include <stdio.h> #include <stdlib.h> #include <math.h> int cmp(const void *k1, const void *k2) { if (*((float *)k1) < *((float *)k2)) return -1; if (*((float *)k1) > *((float *)k2)) return 1; return 0; } void fivenum(int n, float *x) { int i, j; float t, sum, ave, sd; qsort(x, n, sizeof(float), cmp); for(i = 0; i < 4; i++) { t = (n - 1.0) * i / 4.0; j = (int)t; printf("%g, ", x[j] + (x[j + 1] - x[j]) * (t - j)); } printf("%g, ", x[n - 1]); sum = 0.0; for(i = 0; i < n; i++) sum += x[i]; ave = sum / (float)n; sd = 0.0; for(i = 0; i < n; i++) sd += (x[i] - ave) * (x[i] - ave); sd = sqrt(sd / (float)(n - 1)); printf("%d, %g, %g, %g\n",n,sum,ave,sd); } int main() { int n; float *x; x = (float *)malloc(sizeof(float)*100); n = 0; while(scanf("%g",&x[n]) != EOF) n++; fivenum(n,x); return 0; }
(date;echo ", ";date '+%s';echo ", ";ping -c 20 XXX.XXX.XXX.XXX | grep "^64" | cut -d" " -f7| cut -c6-12 | fivenum) | tr -d "\n"
Statistics::Liteを持ってきて,
#!/usr/bin/perl use Statistics::Lite qw(:all); $time = localtime(time); open(IN, 'ping -c 20 XXX.XXX.XXX.XXX | grep "^64" | cut -d" " -f7| cut -c6-12 |'); @data = ; close(IN); for ($i = 0; $i <= $#data; $i++) { $data[$i] = $data[$i] + 0; } my %stats = statshash(@data); print "$time, $stats{min}, $stats{max}, $stats{range}, $stats{sum}, $stats{count}, stats{mean}, $stats{median}, $stats{mode}, $stats{variance}, $stats{stddev}\n";
set xdata time set timefmt "%H:%M:%S" plot ["12:00":"19:00"] "data.dat" using 1:4:3:7:6 with candlesticks notitle, "data.dat" using 1:5 title 'median' with linespoints pt 3 ps 0.3, "data.dat" using 1:10 title 'mean' with points pt 3 ps 0.3