Scripts pour mettre en place un serveur Iperf public
J'ai mis en place un serveur Iperf public sur testdebit.info et je vous partage mon retour d'expérience si vous avez besoin de mettre en place un serveur iperf qui tourne 24h/24 et qui est robuste. En effet un simple iperf -s risque vite de se retrouver indisponible car le logiciel peut planter dans de nombreux cas (par exemple avec certaines options demandée par le client qui est dans une autre version)
j'ai donc mis en places deux scripts démarrés via la crontab root de linux :
* * * * * /home/vgu/scripts/check_i-p-e-r-f.sh >/dev/null 2>&1
59 */6 * * * /home/vgu/scripts/restart_i-p-e-r-f.sh >/dev/null 2>&1
Le premier script, check_i-p-e-r-f.sh est démarré toutes les minutes et va vérifier que Iperf est bien lancé. Si ce n'est pas le cas, Iperf sera de nouveau démarré, avec un utilisateur sans droit crée par défaut : nobody
Un fichier de log est tenu simplement en écrivant la date et l'heure, ce qui permet de voir si il plante souvent (chaque redémarrage du serveur entraîne également une ligne car je n'ai pas mis en place de script pour démarrer iperf lors de l'allumage du serveur car le check est fait toutes les minutes.
#!/bin/dash
if [ `ps -C iperf | wc -l` = "1" ]
then
date >> /home/log/iperf/plantage_iperf.log
/usr/bin/sudo -u nobody /usr/bin/iperf -s >/dev/null 2>&1
fi
Le second script, restart_i-p-e-r-f.sh est démarré toutes les 6 heures. Il tue l'Iperf qui tourne en tache de fond et qui peut être vivant mais bloqué et donc inutilisable (c'est rare mais cela arrive). Il ne faut pas faire cette opération trop souvent car les transferts en cours sont eux aussi stoppés.
Le premier temps d'attente permet d'éviter un télescopage avec le script qui tourne toutes les minutes.
Le temps d'attente après le kill est pour laisser au système le temps de bien tuer le processus. deux kill sont fait pour plus de précautions.
#!/bin/dash
/bin/sleep 20
/usr/bin/killall iperf
/bin/sleep 1
/usr/bin/killall -9 iperf
/bin/sleep 1
if [ `ps -C iperf | wc -l` = "1" ]
then
date >> /home/log/iperf/restart_6h_iperf.log
/usr/bin/sudo -u nobody /usr/bin/iperf -s >/dev/null 2>&1
fi
Voila, c'est un script simple mais qui pourra aider certaines personnes (K-Net et le Rezopole s'en sont inspiré pour leur serveur Iperf public)