#!/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}"