diff options
| author | Robert Günzler <r@gnzler.io> | 2022-11-18 18:07:38 +0100 |
|---|---|---|
| committer | Robert Günzler <r@gnzler.io> | 2022-11-18 18:38:21 +0100 |
| commit | f005fbf41646437964458d4c2028e6fdc04b59a1 (patch) | |
| tree | 2db56c1d202137278c5642ed418123b882d35dc5 /bin/netspeed | |
| parent | 5e6e8da510836bbb0c7ac1602d51a394ba02ab2b (diff) | |
bin: add a few scripts
Diffstat (limited to 'bin/netspeed')
| -rwxr-xr-x | bin/netspeed | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/bin/netspeed b/bin/netspeed new file mode 100755 index 0000000..6db5dc5 --- /dev/null +++ b/bin/netspeed @@ -0,0 +1,65 @@ +#!/bin/sh + +set -e +[ -n "$DEBUG" ] && set -x + +if [ "$1" = "-h" ] || [ "$1" = "help" ]; then + printf "usage: %s\n" "$(basename "$0")" + printf "use iperf3 to benchmark connection throughput\n" + printf "\n" + exit 2 +fi + +SERVER=inazuma.moji.moe +PORT=33000 + +run_server() { + printf "starting server... => %s:%s\n" "${SERVER}" "${PORT}" >&2 + ssh ${SERVER} -- iperf3 -s -D -1 -p ${PORT} + # sleep 3 +} + +run_client() { + printf "measuring...\n" >&2 + case $1 in + dl) iperf3 -J -c ${SERVER} -p ${PORT} -R ;; + ul) iperf3 -J -c ${SERVER} -p ${PORT} ;; + esac +} + +place() { + iplink=$(ip link | grep UP | cut -d' ' -f2 | tr -d ':' | grep -v lo | head -n1) + case "${iplink}" in + wlan*) iwctl station "${iplink}" show | grep network | xargs | cut -d' ' -f3- ;; + *) printf "?\n" ;; + esac +} + +if [ -n "$MANUAL" ]; then + run_server + set -x + exec iperf3 -c ${SERVER} -p ${PORT} "$@" +fi + +# measure download +run_server +bps_dl=$(run_client dl | + jq -r '.end.sum_received.bits_per_second' | + awk '{print $0/1000000}') + +printf "DL: %.2f\n" "${bps_dl}" >&2 + +# measure upload +run_server +bps_ul=$(iperf3 -J -c ${SERVER} -p ${PORT} | + jq -r '.end.sum_sent.bits_per_second' | + awk '{print $0/1000000}') + +printf "UL: %.2f\n" "${bps_ul}" >&2 + +# print results +printf "%s,COUNTRY,CITY,%s,%.2f,%.2f,LAT,LON\n" \ + "$(date +%d/%m/%y)" \ + "$(place)" \ + "${bps_dl}" \ + "${bps_ul}" |