iperf3 -s
\\
=== Ordnerstruktur ===
../networkTest/networktest.sh
present.php
STANDORTORDNER/
IP1.txt
IP2.txt
IPn.txt
=== networkTest.sh ===
#!/bin/bash
# Skript führt eine Netzwerkmessung mit iperf3 an den angegebenen Rechnern durch
#Variablen
str_server="iperf3 SERVER" #Server IP
lst_clients="Client1 Client2 ..." #Lister der Clients
str_sshUser="SSHUSER" #SSH Benutzer
str_sshPass="SSHPASS" #SSH Passwort
str_baseDir=$(dirname "$(readlink -f "$0")")/ #Ausgabeverzeichnis
bol_json="--json" # Kommentar entfernen für Ausgabe im json Format?
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
str_myIP=$(hostname -I|awk '{print $1}')
read -p "Geben Sie bitte den Standort an (Berlin): " str_location
str_output=${str_baseDir}${str_location}/
# Dies ist das Skript was auf die Clients kopiert wird
str_networkTest=$(cat << EOF
#!/bin/bash
# Installiere requirements
if ! dpkg --list | grep iperf3 &> /dev/null ; then echo -e "${str_sshPass}\n" | sudo -S apt-get install iperf3 -y ; fi
if ! dpkg --list | grep sshpass &> /dev/null ; then echo -e "${str_sshPass}\n" | sudo -S apt-get install sshpass -y ; fi
if [ -f /tmp/ergebnis.txt ]; then echo -e "${str_sshPass}\n" | sudo -S rm /tmp/ergebnis.txt ; fi
# Führe die Messung durch und speicher das Ergebnis im Logfile
iperf3 -c ${str_server} -u -b 100M -i 12 --logfile /tmp/ergebnis.txt ${bol_json}
# Kopiere das Logfile auf den Adminclient
sshpass -p "${str_sshPass}" scp -o StrictHostKeyChecking=no /tmp/ergebnis.txt ${str_sshUser}@${str_myIP}:${str_output}\$1.txt
EOF
)
echo -e "$str_networkTest" > /tmp/networkTest.sh
# Variablen Prüfung
if [ -z "${str_server}" ]; then read -p "Geben Sie bitte den iperf3 Server ein: " str_server; fi
if [ -z "${lst_clients}" ]; then read -p "Geben Sie die iperf3 Client Liste ein (Client1 Client2 ... ClientN): " lst_clients; fi
if [ -z "${str_sshUser}" ]; then read -p "Geben Sie bitte den SSH Benutzer ein: " str_sshUser; fi
if [ -z "${str_server}" ]; then read -p -s "Geben Sie bitte das SSH Passwort ein: " str_sshPass; fi
# Output Verzeichnis erstellen
if [ ! -d "${str_output}" ]; then mkdir -p ${str_output}; fi
# Pakete installieren
if ! dpkg --list | grep sshpass &> /dev/null; then apt-get install ssh sshpass -y ;fi
if ! dpkg --list | grep php &> /dev/null; then apt-get install ssh php -y ;fi
# Client initialisieren
int_clients=0
int_successClients=0
# Nacheinander werden die Client getestet
for str_client in ${lst_clients}; do
printf "${YELLOW}Connection to ${str_client}...${NC}"
int_clients=$((int_clients + 1))
if ping -c 3 ${str_client} &> /dev/null ; then
# Kopiere das Testskript auf den Client
sshpass -p "${str_sshPass}" scp -o StrictHostKeyChecking=no /tmp/networkTest.sh ${str_sshUser}@${str_client}:~/
# FÜhre den Test auf dem Client durch
sshpass -p "${str_sshPass}" ssh -o StrictHostKeyChecking=no ${str_sshUser}@${str_client} "chmod +x ~/networkTest.sh ; echo -e \"${str_sshPass}\\n\" | sudo -S ~/networkTest.sh ${str_client}"
# Entferne das Skript wieder
sshpass -p "${str_sshPass}" ssh -o StrictHostKeyChecking=no ${str_sshUser}@${str_client} "rm ~/networkTest.sh"
printf "${GREEN}\rConnection success! Result stored in ${str_output}${str_client}.txt${NC}\n"
int_successClients=$((int_successClients + 1))
else
printf "${RED}\rCant connect to ${str_client}...\n${NC}"
fi
done
echo
printf "${YELLOW}${int_successClients} from ${int_clients} are successful!\n"
# Erstelle html zusammenfassung
cp ${str_baseDir}/present.php ${str_output}/
php ${str_output}/present.php > ${str_output}/present.html
\\
=== present.php ===
Netzwerkmessung Standort
Netzwerkmessung Standort
Diagramme der Ergebnisse:
Bandbreite (Mbit/s)
Jitter (ms)
Gesendete und Empfangene Pakete
Zusammenfassung der Messwerte:
Datei
Client IP
Server IP
Bandbreite (Mbit/s)
Jitter (ms)
Gesendete Pakete
Empfangene Pakete