diff options
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}" |