Ein Wiki privater Natur

Speedtests für den eigene Internet Anbindung

sind hier: speedtests

Wie testet man ratelimit

eines Webservers?:

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

Anwendung:

 ./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

experiment:tools