Cron Speedtest で ネットワーク速度の測定

約15分に一度 Cron で speedtest を立ち上げて csv で記録する

まずは完成形。

*/15 * * * * sleep $(((`hexdump -n 2 -e '/2 "\%u"' /dev/urandom`)\%(14*60)))  ;/usr/bin/speedtest --csv >> /home/pi/speedtest-csv/speedtest.csv 2>> /home/pi/speedtest-csv/speedtest.err.log

$(((hexdump -n 2 -e '/2 "\%u"' /dev/urandom)\%(14*60)))

Raspberry pi は cron でシェルに dash を使う。そのため $RANDOM が使えない。

Crontab 書き換えてbash 使えるようにしてももいいけど、他のマシン作るときにめんどくさい。

#普通の sh 
sleep $(( $RANDOM % (14*60) )) # 動作時間も考えて 14分までの遅延させる。
sleep $((  (hexdump -n 2 -e '/2 "%u"' /dev/urandom)%(14*60)  ))

Cron では % 以後捨てられる

ので、\% としエスケープさせる。

約15分に一回

crontabで設定しログを取ると時々データーが抜ける。

ERROR: Unable to connect to servers to test latency.
ERROR: Unable to connect to servers to test latency.
2021年  8月 10日 火曜日 14:30:02 UTC
ERROR: Unable to connect to servers to test latency.
2021年  8月 10日 火曜日 14:45:01 UTC
2021年  8月 10日 火曜日 15:00:01 UTC
ERROR: Unable to connect to servers to test latency.
2021年  8月 10日 火曜日 15:15:01 UTC
2021年  8月 10日 火曜日 16:27:27 UTC
2021年  8月 11日 水曜日 21:58:02 UTC
2021年  8月 11日 水曜日 22:08:44 UTC
2021年  8月 11日 水曜日 22:20:07 UTC

例外なく0分と30分。想像できるのがみんなアクセスしているから。

だから少しランダム化してみた。

これほど勉強する羽目になるとは。