Scripts pour redémarrer régulièrement iPerf3 (en tant que serveur)Les serveurs iPerf3 publics sont fréquemment indisponibles. Il y a des utilisateurs qui lancent des tests trés long avec iperf, mais aussi des plantages du serveur.
$ iperf3 -c iperf.he.net
iperf3: error - the server is busy running a test. try again later
$ iperf3 -c ping.online.net
iperf3: error - unable to receive control message: Connection reset by peerLa solution que j'ai trouvé est la suivante :
- Ecouter sur 9 ports TCP en // pour permettre de faire un test sur un autre port si le premier est occupé ou planté
- Kill de tous les serveurs iperf toutes les 30 minutes.
Voici le script que j'utilise,
auriez-vous des idées pour faire la chose de façon plus propre ?Le but est de mettre ensuite le script à disposition de tous, sur la page
https://iperf.fr/iperf-servers.phpFichier /etc/rc.local pour le démarrage initial :/home/scripts/restart_iperf.sh
Crontab, pour le ré-démarrage toutes les 30 minutes :# Redémarrer IPERF3
*/30 * * * * /home/scripts/restart_iperf.sh >/dev/null 2>&1
restart_iperf.sh :#!/bin/dash
/bin/sleep 10
/usr/bin/killall iperf3
/bin/sleep 0.1
/usr/bin/killall -9 iperf3
/bin/sleep 0.1
if [ `ps -C iperf3 | wc -l` = "1" ]
then
/usr/bin/sudo -u nobody /usr/bin/iperf3 -s -p 5200 -D >/dev/null 2>&1
/usr/bin/sudo -u nobody /usr/bin/iperf3 -s -p 5201 -D >/dev/null 2>&1
/usr/bin/sudo -u nobody /usr/bin/iperf3 -s -p 5202 -D >/dev/null 2>&1
/usr/bin/sudo -u nobody /usr/bin/iperf3 -s -p 5203 -D >/dev/null 2>&1
/usr/bin/sudo -u nobody /usr/bin/iperf3 -s -p 5204 -D >/dev/null 2>&1
/usr/bin/sudo -u nobody /usr/bin/iperf3 -s -p 5205 -D >/dev/null 2>&1
/usr/bin/sudo -u nobody /usr/bin/iperf3 -s -p 5206 -D >/dev/null 2>&1
/usr/bin/sudo -u nobody /usr/bin/iperf3 -s -p 5207 -D >/dev/null 2>&1
/usr/bin/sudo -u nobody /usr/bin/iperf3 -s -p 5208 -D >/dev/null 2>&1
/usr/bin/sudo -u nobody /usr/bin/iperf3 -s -p 5209 -D >/dev/null 2>&1
fi