#!/bin/bash
# bed 6.6.2024
# speedtester.sh
# $Revision: 1.5 $
# Überprüft, ob die Anzahl der Argumente korrekt ist
bold=$(tput bold)
reset=$(tput sgr0)
if [ $# -ne 1 ]; then
echo "Fehler: Bitte geben Sie eine URL als Parameter an."
echo "Beispiel: $0 https://example.com"
exit 1
fi
# URL aus dem ersten Argument extrahieren
url=$1
# Überprüfen, ob die URL mit "http://" oder "https://" beginnt
if [[ $url != http://* && $url != https://* ]]; then
echo "Fehler: Die URL muss mit 'http://' oder 'https://' beginnen."
exit 1
fi
# Überprüfen, ob die URL mindestens einen Punkt enthält
if ! [[ $url =~ \. ]]; then
echo "Fehler: Die URL muss mindestens einen Punkt enthalten."
exit 1
fi
echo ""
# Array zum Speichern der Downloadgeschwindigkeiten
speeds=()
# Download-Datei
output="/dev/null"
# Temporäre Datei für wget
tempfile=$(mktemp)
# Anzahl der Messungen
num_measurements=5
echo -e "Downloadgeschwindigkeit von ${url}"
echo -e "Führe ${num_measurements} Messungen durch."
# Führe die Messungen durch
for i in $(seq 1 $num_measurements); do
echo -n "Messe $i von $num_measurements ..."
echo -ne "\r"
# Verwende wget, um die Downloadgeschwindigkeit zu messen und das Ergebnis in eine Datei zu speichern
wget $url -O $output 2> $tempfile
# Extrahiere die Geschwindigkeit aus der Ausgabe
speed=$(tail -2 $tempfile | grep /dev/null | cut -d\( -f2 | cut -d\) -f1)
# Speichere die gemessene Geschwindigkeit im Array
speeds+=("$speed")
# Warte eine Sekunde vor der nächsten Messung
sleep 1
done
# Berechne den Mittelwert der gemessenen Geschwindigkeiten
sum=0
total_units="KB/s"
for speed in "${speeds[@]}"; do
# Entferne das MB/s oder KB/s für die Berechnung und ersetze das Komma durch einen Punkt
value=$(echo $speed | sed 's/[A-Za-z\/]//g' | sed 's/,/./g')
# Wenn die Geschwindigkeit in MB/s angegeben ist, in KB/s umrechnen und die Einheit ändern
if [[ $speed == *MB/s ]]; then
value=$(echo "$value * 1024" | bc -l)
total_units="MB/s"
fi
sum=$(echo "$sum + $value" | bc -l)
done
rm $tempfile
mean=$(echo "scale=2; $sum / $num_measurements" | bc -l)
# Ausgabe der Messergebnisse
echo
echo -e "Gemessene Downloadgeschwindigkeiten : ${speeds[@]}"
# Konvertiere den Mittelwert entsprechend zurück
if [ "$total_units" == "MB/s" ]; then
mean=$(echo "scale=2; $mean / 1024" | bc -l)
fi
echo -e "Mittelwert der Downloadgeschwindigkeit : ${bold}${mean} ${total_units}${reset}"
./speedtester.sh URL
Messung 5 von 5...
Gemessene Downloadgeschwindigkeiten: 2,12 MB/s 2,05 MB/s 1,97 MB/s 2,07 MB/s 1,99 MB/s
Mittelwert der Downloadgeschwindigkeit: 2088.96 KB/s
bed@debian-bookworm:~/speedtest$ ./speedtester.sh URL
Messung 5 von 5...
Gemessene Downloadgeschwindigkeiten: 284 KB/s 381 KB/s 328 KB/s 283 KB/s 330 KB/s
Mittelwert der Downloadgeschwindigkeit: 321.20 KB/s