summary refs log tree commit diff
path: root/bin/netspeed
diff options
context:
space:
mode:
authorRobert Günzler <r@gnzler.io>2022-11-18 18:07:38 +0100
committerRobert Günzler <r@gnzler.io>2022-11-18 18:38:21 +0100
commitf005fbf41646437964458d4c2028e6fdc04b59a1 (patch)
tree2db56c1d202137278c5642ed418123b882d35dc5 /bin/netspeed
parent5e6e8da510836bbb0c7ac1602d51a394ba02ab2b (diff)
bin: add a few scripts
Diffstat (limited to 'bin/netspeed')
-rwxr-xr-xbin/netspeed65
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}"